Merge branch 'develop' into 'ent-11729-plugin-proxmox-discovery-disco'

Conflicts:
   pandora_console/extras/mr/66.sql
This commit is contained in:
Enrique Martin 2023-09-19 08:42:38 +00:00
commit 7a725d0c16
55 changed files with 384 additions and 559 deletions

View File

@ -1,5 +1,5 @@
package: pandorafms-agent-unix
Version: 7.0NG.773.3-230912
Version: 7.0NG.773.3-230919
Architecture: all
Priority: optional
Section: admin

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -10,7 +10,7 @@
# **********************************************************************
PI_VERSION="7.0NG.773.3"
PI_BUILD="230912"
PI_BUILD="230919"
OS_NAME=`uname -s`
FORCE=0

View File

@ -186,7 +186,7 @@ UpgradeApplicationID
{}
Version
{230912}
{230919}
ViewReadme
{Yes}

View File

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

View File

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

View File

@ -1,5 +1,5 @@
package: pandorafms-console
Version: 7.0NG.773.3-230912
Version: 7.0NG.773.3-230919
Architecture: all
Priority: optional
Section: admin

View File

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

View File

@ -1,5 +1,6 @@
START TRANSACTION;
ALTER TABLE tevent_filter ADD private_filter_user text NULL;
ALTER TABLE `ttrap` ADD COLUMN `utimestamp` INT UNSIGNED NOT NULL DEFAULT 0;
UPDATE ttrap SET utimestamp=UNIX_TIMESTAMP(timestamp);
@ -44,6 +45,8 @@ ADD COLUMN `time_init` VARCHAR(45) NULL AFTER `date_init`,
ADD COLUMN `date_end` VARCHAR(45) NULL AFTER `time_init`,
ADD COLUMN `time_end` VARCHAR(45) NULL AFTER `date_end`;
UPDATE `tdiscovery_apps` SET `version` = '1.1' WHERE `short_name` = 'pandorafms.vmware';
-- Insert new Proxmox APP
SET @short_name = 'pandorafms.proxmox';
SET @name = 'Proxmox';

View File

@ -437,7 +437,7 @@ if ($id_agente) {
[
'href' => 'index.php?sec=gagente&sec2=godmode/agentes/configurar_agente&tab=alert&id_agente='.$id_agente,
'content' => html_print_image(
'images/alert@svg.svg',
'images/add-alert.svg',
true,
[
'title' => __('Alerts'),

View File

@ -811,7 +811,7 @@ foreach ($simple_alerts as $alert) {
$data[3] .= '<tr class="datos2">';
$data[3] .= '<td class="w50p">'.html_print_label_input_block(
__('Agent'),
ui_print_truncate_text($alias, 'agent_small', false, true, true, '[&hellip;]')
ui_print_truncate_text($alias, 'agent_medium', false, true, true, '[&hellip;]')
).'</td>';
$data[3] .= '<td class="w50p">'.html_print_label_input_block(
__('Module'),

View File

@ -61,6 +61,9 @@ if ($id) {
$filter = events_get_event_filter($id);
$id_group_filter = $filter['id_group_filter'];
$id_group = $filter['id_group'];
// Get owner user private filter.
$private_filter = ($filter['private_filter_user'] === null || $filter['private_filter_user'] === '') ? 0 : 1;
$private_filter_user = $filter['private_filter_user'];
$id_name = $filter['id_name'];
$event_type = $filter['event_type'];
$severity = explode(',', $filter['severity']);
@ -113,6 +116,7 @@ if ($id) {
$server_id = ($filter['server_id'] ?? '');
} else {
$id_group = '';
$private_filter = 0;
$id_group_filter = '';
$id_name = '';
$event_type = '';
@ -167,8 +171,8 @@ if ($update || $create) {
$id_user_ack = get_parameter('id_user_ack', '');
$owner_user = get_parameter('owner_user', '');
$group_rep = get_parameter('group_rep', '');
$date_from = get_parameter('date_from', '');
$date_to = get_parameter('date_to', '');
$date_from = get_parameter('date_from', '0000-00-00');
$date_to = get_parameter('date_to', '0000-00-00');
$source = get_parameter('source');
$id_extra = get_parameter('id_extra');
$user_comment = get_parameter('user_comment');
@ -192,6 +196,16 @@ if ($update || $create) {
$server_id = implode(',', $servers_array);
}
// Get private filter from user.
$private_filter = get_parameter_switch('private_filter_event', 0);
if ((int) $private_filter === 1 && $create) {
$private_filter_user = $_SESSION['id_usuario'];
} else if ((int) $private_filter === 1 && $update) {
$private_filter_user = ($private_filter_user === $_SESSION['id_usuario']) ? $private_filter_user : $_SESSION['id_usuario'];
} else if ((int) $private_filter === 0) {
$private_filter_user = null;
}
$values = [
'id_name' => $id_name,
'id_group_filter' => $id_group_filter,
@ -222,6 +236,7 @@ if ($update || $create) {
'custom_data' => $custom_data,
'custom_data_filter_type' => $custom_data_filter_type,
'server_id' => $server_id,
'private_filter_user' => $private_filter_user,
];
$severity = explode(',', $severity);
@ -293,6 +308,17 @@ $table->data[0][0] = html_print_label_input_block(
false,
'',
'w100p'
).html_print_label_input_block(
__('Private'),
html_print_checkbox_switch(
'private_filter_event',
$private_filter,
$private_filter,
true,
false,
'checked_slide_events(this);',
true
)
)
);

View File

@ -133,6 +133,18 @@ $filters = db_get_all_rows_sql($sql);
if ($filters === false) {
$filters = [];
} else {
foreach ($filters as $key => $filter) {
$permission = users_is_admin($config['id_user']);
// Validate permission and private filter user.
if ($permission || $filter['private_filter_user'] === $config['id_user']) {
if ($filter['private_filter_user'] !== null) {
$filters[$key]['id_name'] = $filter['id_name'].' (P)';
}
} else if ($filter['private_filter_user'] !== null) {
unset($filters[$key]);
}
}
}
$table = new stdClass();

View File

@ -607,16 +607,20 @@ if (is_metaconsole() === true) {
}
}
$performance_variables_control = (array) json_decode(io_safe_output($config['performance_variables_control']));
$userManagementTable->rowclass['captions_blocksize_eventfilter'] = 'field_half_width';
$userManagementTable->rowclass['fields_blocksize_eventfilter'] = 'field_half_width';
$userManagementTable->data['captions_blocksize_eventfilter'][0] = __('Block size for pagination');
$userManagementTable->data['fields_blocksize_eventfilter'][0] = html_print_input_text(
'block_size',
$user_info['block_size'],
'',
5,
5,
true
$userManagementTable->data['fields_blocksize_eventfilter'][0] = html_print_input(
[
'type' => 'number',
'size' => 5,
'max' => $performance_variables_control['block_size']->max,
'name' => 'block_size',
'value' => $user_info['block_size'],
'return' => true,
]
);
if (is_metaconsole() === true && empty($user_info['metaconsole_default_event_filter']) !== true) {

View 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>Add alert@svg</title>
<g id="Add-alert" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<path d="M10,18 C10,19.1046875 9.10426763,20 8,20 C6.89573237,20 6,19.1046875 6,18 Z M8,2 C8.47753934,2 8.88669653,2.29621004 9.05726495,2.71662986 C8.40926188,3.26642114 8,4.08541645 8,5 L8.00509269,5.17627279 C8.09633912,6.75108004 9.40231912,8 11,8 L12,8 L12,9 C12,10.2760205 12.7966542,11.3659725 13.9197222,11.7996155 C14.313005,13.7223855 15.173052,14.4998338 15.6924763,15.0633413 C15.9067613,15.2955529 16.001761,15.5739183 16,15.8461538 C15.9964039,16.4375 15.5364053,17 14.8535503,17 L1.14644973,17 C0.46359469,17 0.00395325166,16.4375 -1.59872116e-13,15.8461538 C-0.00176101642,15.5739183 0.0932386904,15.2959135 0.307523743,15.0633413 C0.997521614,14.3147837 2.28858906,13.1887019 2.28858906,9.5 C2.28858906,6.69831731 4.23429734,4.45552885 6.85786067,3.90528846 L6.85786067,3.15384615 C6.85786067,2.51670673 7.36928766,2 8,2 Z M15,0 C15.5522847,-1.01453063e-16 16,0.44771525 16,1 L16,3.999 L19,4 C19.5522847,4 20,4.44771525 20,5 C20,5.55228475 19.5522847,6 19,6 L16,6 L16,9 C16,9.55228475 15.5522847,10 15,10 C14.4477153,10 14,9.55228475 14,9 L14,6 L11,6 C10.4477153,6 10,5.55228475 10,5 C10,4.44771525 10.4477153,4 11,4 L14,4 L14,1 C14,0.44771525 14.4477153,1.01453063e-16 15,0 Z" id="Shape" fill="#3F3F3F"></path>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.5 KiB

View File

@ -35,7 +35,6 @@ $disable_alert = (bool) get_parameter('disable_alert');
$enable_alert = (bool) get_parameter('enable_alert');
$get_actions_module = (bool) get_parameter('get_actions_module');
$show_update_action_menu = (bool) get_parameter('show_update_action_menu');
$get_agent_alerts_agent_view = (bool) get_parameter('get_agent_alerts_agent_view');
$resize_event_week = (bool) get_parameter('resize_event_week');
$get_agent_alerts_datatable = (bool) get_parameter('get_agent_alerts_datatable', 0);
$alert_validate = (bool) get_parameter('alert_validate', false);
@ -91,270 +90,6 @@ if ($get_agent_alerts_simple) {
}
if ($get_agent_alerts_agent_view) {
include_once $config['homedir'].'/include/functions_agents.php';
include_once $config['homedir'].'/operation/agentes/alerts_status.functions.php';
include_once $config['homedir'].'/include/functions_users.php';
$agent_a = check_acl($config['id_user'], 0, 'AR');
$agent_w = check_acl($config['id_user'], 0, 'AW');
$access = ($agent_a == true) ? 'AR' : (($agent_w == true) ? 'AW' : 'AR');
$free_search_alert = get_parameter('free_search_alert', '');
$all_groups = json_decode(io_safe_output(get_parameter('all_groups')));
$idAgent = (int) get_parameter('id_agent');
$filter = get_parameter('filter', 'all_enabled');
$url = 'index.php?sec=estado&amp;sec2=operation/agentes/ver_agente&amp;id_agente='.$idAgent;
$sortField = get_parameter('sort_field');
$sort = get_parameter('sort', 'none');
$selected = true;
$selectModuleUp = false;
$selectModuleDown = false;
$selectTemplateUp = false;
$selectTemplateDown = false;
$selectLastFiredUp = false;
$selectLastFiredDown = false;
switch ($sortField) {
case 'module':
switch ($sort) {
case 'up':
$selectModuleUp = $selected;
$order = [
'field' => 'agent_module_name',
'order' => 'ASC',
];
break;
case 'down':
$selectModuleDown = $selected;
$order = [
'field' => 'agent_module_name',
'order' => 'DESC',
];
break;
}
break;
case 'template':
switch ($sort) {
case 'up':
$selectTemplateUp = $selected;
$order = [
'field' => 'template_name',
'order' => 'ASC',
];
break;
case 'down':
$selectTemplateDown = $selected;
$order = [
'field' => 'template_name',
'order' => 'DESC',
];
break;
}
break;
case 'last_fired':
switch ($sort) {
case 'up':
$selectLastFiredUp = $selected;
$order = [
'field' => 'last_fired',
'order' => 'ASC',
];
break;
case 'down':
$selectLastFiredDown = $selected;
$order = [
'field' => 'last_fired',
'order' => 'DESC',
];
break;
}
break;
default:
$selectDisabledUp = '';
$selectDisabledDown = '';
$selectModuleUp = $selected;
$selectModuleDown = false;
$selectTemplateUp = false;
$selectTemplateDown = false;
$selectLastFiredUp = false;
$selectLastFiredDown = false;
$order = [
'field' => 'agent_module_name',
'order' => 'ASC',
];
break;
}
if ($free_search_alert != '') {
$whereAlertSimple = 'AND ('.'id_alert_template IN (
SELECT id
FROM talert_templates
WHERE name LIKE "%'.$free_search_alert.'%") OR '.'id_alert_template IN (
SELECT id
FROM talert_templates
WHERE id_alert_action IN (
SELECT id
FROM talert_actions
WHERE name LIKE "%'.$free_search_alert.'%")) OR '.'talert_template_modules.id IN (
SELECT id_alert_template_module
FROM talert_template_module_actions
WHERE id_alert_action IN (
SELECT id
FROM talert_actions
WHERE name LIKE "%'.$free_search_alert.'%")) OR '.'id_agent_module IN (
SELECT id_agente_modulo
FROM tagente_modulo
WHERE nombre LIKE "%'.$free_search_alert.'%") OR '.'id_agent_module IN (
SELECT id_agente_modulo
FROM tagente_modulo
WHERE alias LIKE "%'.$free_search_alert.'%")'.')';
} else {
$whereAlertSimple = '';
}
// Add checks for user ACL.
$groups = users_get_groups($config['id_user'], $access);
$id_groups = array_keys($groups);
if (empty($id_groups)) {
$whereAlertSimple .= ' AND (1 = 0) ';
} else {
$whereAlertSimple .= sprintf(
' AND id_agent_module IN (
SELECT tam.id_agente_modulo
FROM tagente_modulo tam
WHERE tam.id_agente IN (
SELECT
ta.id_agente
FROM
tagente ta
WHERE
ta.id_grupo IN (%s)
)
OR tam.id_agente IN (
SELECT
DISTINCT(tasg.id_agent)
FROM
tagent_secondary_group tasg
WHERE
tasg.id_group IN (%s)
)
) ',
implode(',', $id_groups),
implode(',', $id_groups)
);
}
$alerts = [];
$filter_alert = [];
if ($filter_standby == 'standby_on') {
$filter_alert['disabled'] = $filter;
$filter_alert['standby'] = '1';
} else if ($filter_standby == 'standby_off') {
$filter_alert['disabled'] = $filter;
$filter_alert['standby'] = '0';
} else {
$filter_alert['disabled'] = $filter;
}
$options_simple = ['order' => $order];
$alerts['alerts_simple'] = agents_get_alerts_simple($idAgent, $filter_alert, $options_simple, $whereAlertSimple, false, false, false, false, $strict_user, $tag_filter);
$countAlertsSimple = agents_get_alerts_simple($idAgent, $filter_alert, false, $whereAlertSimple, false, false, false, true, $strict_user, $tag_filter);
// Urls to sort the table.
$url_up_module = $url.'&sort_field=module&sort=up';
$url_down_module = $url.'&sort_field=module&sort=down';
$url_up_template = $url.'&sort_field=template&sort=up';
$url_down_template = $url.'&sort_field=template&sort=down';
$url_up_lastfired = $url.'&sort_field=last_fired&sort=up';
$url_down_lastfired = $url.'&sort_field=last_fired&sort=down';
$table = new stdClass();
$table->width = '100%';
$table->class = 'info_table';
$table->cellpadding = '0';
$table->cellspacing = '0';
$table->size = [];
$table->head = [];
$table->align = [];
if ($isFunctionPolicies !== ENTERPRISE_NOT_HOOK) {
$table->size[7] = '5%';
if (check_acl_one_of_groups($config['id_user'], $all_groups, 'LW') || check_acl_one_of_groups($config['id_user'], $all_groups, 'LM')) {
$table->head[8] = __('Validate');
$table->align[8] = 'left';
$table->size[8] = '5%';
}
$table->head[0] = "<span title='".__('Policy')."'>".__('P.').'</span>';
$table->head[1] = "<span title='".__('Standby')."'>".__('S.').'</span>';
if (check_acl_one_of_groups($config['id_user'], $all_groups, 'AW') || check_acl_one_of_groups($config['id_user'], $all_groups, 'LM')) {
$table->head[2] = "<span title='".__('Force execution')."'>".__('F.').'</span>';
}
$table->head[3] = __('Module');
$table->head[4] = __('Template');
$table->head[5] = __('Action');
$table->head[6] = __('Last fired');
$table->head[7] = __('Status');
$table->align[7] = 'center';
$table->head[3] .= ui_get_sorting_arrows($url_up_module, $url_down_module, $selectModuleUp, $selectModuleDown);
$table->head[4] .= ui_get_sorting_arrows($url_up_template, $url_down_template, $selectTemplateUp, $selectTemplateDown);
$table->head[6] .= ui_get_sorting_arrows($url_up_lastfired, $url_down_lastfired, $selectLastFiredUp, $selectLastFiredDown);
} else {
$table->size[6] = '5%';
if (check_acl($config['id_user'], $id_group, 'LW') || check_acl($config['id_user'], $id_group, 'LM')) {
$table->head[7] = __('Validate');
$table->align[7] = 'left';
$table->size[7] = '5%';
}
$table->head[0] = "<span title='".__('Standby')."'>".__('S.').'</span>';
if (check_acl($config['id_user'], $id_group, 'AW') || check_acl($config['id_user'], $id_group, 'LM')) {
$table->head[1] = "<span title='".__('Force execution')."'>".__('F.').'</span>';
}
$table->head[2] = __('Module');
$table->head[3] = __('Template');
$table->head[4] = __('Action');
$table->head[5] = __('Last fired');
$table->head[6] = __('Status');
$table->align[6] = 'center';
$table->head[2] .= ui_get_sorting_arrows($url_up_module, $url_down_module, $selectModuleUp, $selectModuleDown);
$table->head[3] .= ui_get_sorting_arrows($url_up_template, $url_down_template, $selectTemplateUp, $selectTemplateDown);
$table->head[5] .= ui_get_sorting_arrows($url_up_lastfired, $url_down_lastfired, $selectLastFiredUp, $selectLastFiredDown);
}
$table->data = [];
$rowPair = true;
$iterator = 0;
foreach ($alerts['alerts_simple'] as $alert) {
$row = ui_format_alert_row($alert, false, $url, 'font-size: 9pt;');
$table->data[] = $row;
}
if (empty($table->data) === false) {
html_print_table($table);
} else {
ui_print_info_message(['no_close' => true, 'message' => __('No alerts found') ]);
}
}
if ($enable_alert) {
if (! check_acl($config['id_user'], 0, 'LW')) {
db_pandora_audit(
@ -501,7 +236,7 @@ if ($show_update_action_menu) {
$data .= '<td class="datos">';
$data .= ui_print_truncate_text(
$agent_alias,
'agent_small',
'agent_medium',
false,
true,
true,

View File

@ -92,6 +92,9 @@ $get_id_source_event = get_parameter('get_id_source_event');
$node_id = (int) get_parameter('node_id', 0);
$settings_modal = get_parameter('settings', 0);
$parameters_modal = get_parameter('parameters', 0);
// User private filter.
$current_filter = get_parameter('current_filter', 0);
$private_filter_event = get_parameter('private_filter_event', 0);
if ($get_comments === true) {
global $config;
@ -337,6 +340,14 @@ if ($save_event_filter) {
$values['custom_data'] = get_parameter('custom_data');
$values['custom_data_filter_type'] = get_parameter('custom_data_filter_type');
// Get private filter from user.
$private_filter = get_parameter_switch('private_filter_user', 0);
if ((int) $private_filter === 1) {
$values['private_filter_user'] = $config['id_user'];
} else {
$values['private_filter_user'] = null;
}
if (is_metaconsole() === true) {
$values['server_id'] = implode(',', get_parameter('server_id'));
}
@ -397,6 +408,17 @@ if ($update_event_filter) {
$values['custom_data'] = get_parameter('custom_data');
$values['custom_data_filter_type'] = get_parameter('custom_data_filter_type');
// Get private filter from user.
$private_filter = get_parameter('private_filter_user', 0);
$user_private_filter = events_get_event_filter($id);
if ((int) $private_filter === 1 && $user_private_filter['private_filter_user'] === null) {
$values['private_filter_user'] = $config['id_user'];
} else if ($private_filter === $user_private_filter['private_filter_user'] && $user_private_filter['private_filter_user'] !== $config['id_user']) {
$values['private_filter_user'] = $user_private_filter['private_filter_user'];
} else {
$values['private_filter_user'] = null;
}
if (is_metaconsole() === true) {
$values['server_id'] = implode(',', get_parameter('server_id'));
}
@ -712,8 +734,8 @@ if ($save_filter_modal) {
$table = new StdClass;
$table->id = 'save_filter_form';
$table->width = '100%';
$table->cellspacing = 4;
$table->cellpadding = 4;
$table->cellspacing = 5;
$table->cellpadding = 5;
$table->class = 'databox';
if (is_metaconsole() === true) {
$table->class = 'databox filters';
@ -732,7 +754,7 @@ if ($save_filter_modal) {
'filter_mode',
'new',
__('New filter'),
true,
((int) $current_filter === 0) ? true : false,
true
);
@ -740,7 +762,7 @@ if ($save_filter_modal) {
'filter_mode',
'update',
__('Update filter'),
false,
((int) $current_filter > 0) ? true : false,
true
);
@ -755,6 +777,7 @@ if ($save_filter_modal) {
$table->rowclass[2] = 'flex';
$table->rowclass[3] = 'flex';
$table->rowclass[4] = 'flex';
$table->rowclass[5] = 'flex';
$data[0] = '<b>'.__('Filter name').'</b>'.$jump;
$data[0] .= html_print_input_text('id_name', '', '', 15, 255, true);
if (is_metaconsole()) {
@ -801,9 +824,9 @@ if ($save_filter_modal) {
$data[0] .= html_print_select(
$_filters_update,
'overwrite_filter',
$current_filter,
'',
'',
'',
__('None'),
0,
true,
false,
@ -814,6 +837,31 @@ if ($save_filter_modal) {
$table->data[] = $data;
$table->rowclass[] = '';
$data = [];
$table->rowid[4] = 'update_filter_row2';
$table->data[] = $data;
$table->rowclass[] = '';
// Update user private filter.
$data = [];
$table->rowid[6] = 'private_filter_event_row1';
$data[0] = html_print_label_input_block(
__('Private'),
html_print_checkbox_switch(
'private_filter_event',
$private_filter_event,
$private_filter_event,
true,
false,
'checked_slide_events(this);',
true
)
);
$table->data[] = $data;
$table->rowclass[] = '';
html_print_table($table);
html_print_div(
@ -858,10 +906,19 @@ if ($save_filter_modal) {
?>
<script type="text/javascript">
function show_save_filter() {
$('#save_filter_row1').show();
$('#save_filter_row2').show();
$('#update_filter_row1').hide();
$('#button-update_filter').hide();
if ($('#hidden-id_filter_event').val() == 0) {
$('#save_filter_row1').show();
$('#save_filter_row2').show();
$('#update_filter_row1').hide();
$('#button-update_filter').hide();
} else {
$('#save_filter_row1').hide();
$('#save_filter_row2').hide();
$('#button-save_filter').hide();
$('#update_filter_row1').show();
$('#button-update_filter').show();
}
// Filter save mode selector
$("[name='filter_mode']").click(function() {
if ($(this).val() == 'new') {
@ -936,7 +993,8 @@ function save_new_filter() {
"id_source_event": $("#text-id_source_event").val(),
"server_id": $("#server_id").val(),
"custom_data": $("#text-custom_data").val(),
"custom_data_filter_type": $("#custom_data_filter_type").val()
"custom_data_filter_type": $("#custom_data_filter_type").val(),
"private_filter_user": $("#checkbox-private_filter_event").val()
},
function (data) {
$("#info_box").hide();
@ -1015,7 +1073,8 @@ function save_update_filter() {
"id_source_event": $("#text-id_source_event").val(),
"server_id": $("#server_id").val(),
"custom_data": $("#text-custom_data").val(),
"custom_data_filter_type": $("#custom_data_filter_type").val()
"custom_data_filter_type": $("#custom_data_filter_type").val(),
"private_filter_user": $("#checkbox-private_filter_event").val()
},
function (data) {

View File

@ -621,7 +621,8 @@ class ConsoleSupervisor
'small_operation_step_datos_purge' => 'Small Operation Step to purge old data',
'row_limit_csv' => 'Row limit in csv log',
'limit_parameters_massive' => 'Limit for bulk operations',
'block_size' => 'Block size for pagination',
'block_size' => 'User block size for pagination',
'global_block_size' => 'Global block size for pagination',
'short_module_graph_data' => 'Data precision',
'graph_precision' => 'Data precision in graphs',
];
@ -635,8 +636,14 @@ class ConsoleSupervisor
$message = '';
$limit_value = '';
$url = '';
if ($config[$variable] > $values->max) {
$message = 'Check the setting of %s, a value greater than %s is not recommended';
if ($variable === 'block_size') {
$message .= '. (User: '.$config['id_user'].')';
}
$limit_value = $values->max;
}
@ -647,32 +654,39 @@ class ConsoleSupervisor
if ($limit_value !== '' && $message !== '') {
if (is_metaconsole() === true) {
$this->notify(
[
'type' => 'NOTIF.VARIABLES.PERFORMANCE.'.$variable,
'title' => __('Incorrect config value'),
'message' => __(
$message,
$names[$variable],
$limit_value
),
'url' => '__url__index.php?sec=advanced&sec2=advanced/metasetup',
]
);
$url = '__url__index.php?sec=advanced&sec2=advanced/metasetup';
} else {
$this->notify(
[
'type' => 'NOTIF.VARIABLES.PERFORMANCE.'.$variable,
'title' => __('Incorrect config value'),
'message' => __(
$message,
$names[$variable],
$limit_value
),
'url' => '__url__/index.php?sec=general&sec2=godmode/setup/setup',
]
);
$url = '__url__/index.php?sec=general&sec2=godmode/setup/setup';
}
if ($variable === 'block_size') {
if (is_metaconsole() === true) {
$url = '__url__index.php?sec=gusuarios&sec2=godmode/users/configure_user&edit_user=1&pure=0&id_user='.$config['id_user'];
} else {
$url = '__url__/index.php?sec=gusuarios&sec2=godmode/users/configure_user&edit_user=1&pure=0&id_user='.$config['id_user'];
}
}
if ($variable === 'global_block_size') {
if (is_metaconsole() === true) {
$url = '__url__index.php?sec=advanced&sec2=advanced/metasetup&pure=0&tab=visual';
} else {
$url = '__url__/index.php?sec=gsetup&sec2=godmode/setup/setup&section=vis';
}
}
$this->notify(
[
'type' => 'NOTIF.VARIABLES.PERFORMANCE.'.$variable,
'title' => __('Incorrect config value'),
'message' => __(
$message,
$names[$variable],
$limit_value
),
'url' => $url,
]
);
}
}

View File

@ -316,6 +316,8 @@ class Diagnostics extends Wizard
* Graph of the Free Disk Spool Dir module.
* Graph of the Free RAM module.
* Graph of the Queued Modules module.
* Graph of the Queued_Alerts.
* Graph of the Alert_Server_Status.
* Graph of the Status module.
* Graph of the System Load AVG module.
* Graph of the Execution Time module.
@ -366,6 +368,20 @@ class Diagnostics extends Wizard
'nameModule' => 'Queued_Modules',
'idAgent' => $agentIdMasterServer,
],
'chartQueuedAlerts' => [
'title' => __(
'Graph of the Queued Alerts total.'
),
'nameModule' => 'Queued_Alerts',
'idAgent' => $agentIdMasterServer,
],
'chartAlertServerStatus' => [
'title' => __(
'Graph of the Alert Server Status.'
),
'nameModule' => 'Alert_Server_Status',
'idAgent' => $agentIdMasterServer,
],
'chartStatus' => [
'title' => __('Graph of the Status module.'),
'nameModule' => 'Status',

View File

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

View File

@ -2760,7 +2760,6 @@ function agents_delete_agent($id_agents, $disableACL=false)
enterprise_include_once('include/functions_agents.php');
enterprise_hook('agent_delete_from_cache', [$id_agent]);
// Delete agent from fav menu.
db_process_sql_delete(
'tfavmenu_user',

View File

@ -2573,6 +2573,10 @@ function config_process_config()
'max' => 200,
'min' => 10,
],
'global_block_size' => [
'max' => 200,
'min' => 10,
],
'short_module_graph_data' => [
'max' => 20,
'min' => 1,

View File

@ -3357,7 +3357,7 @@ function events_get_event_filter_select($manage=true)
}
$sql = '
SELECT id_filter, id_name
SELECT id_filter, id_name, private_filter_user
FROM tevent_filter
WHERE id_group_filter IN (0, '.implode(',', array_keys($user_groups)).')';
@ -3368,7 +3368,20 @@ function events_get_event_filter_select($manage=true)
} else {
$result = [];
foreach ($event_filters as $event_filter) {
$result[$event_filter['id_filter']] = $event_filter['id_name'];
$permission = users_is_admin($config['id_user']);
if ($permission || $event_filter['private_filter_user'] === $config['id_user']) {
if ($event_filter['private_filter_user'] !== null) {
$filter_name = $event_filter['id_name'].' (P)';
} else {
$filter_name = $event_filter['id_name'];
}
$result[$event_filter['id_filter']] = $filter_name;
}
if ($event_filter['private_filter_user'] === null) {
$result[$event_filter['id_filter']] = $event_filter['id_name'];
}
}
}

View File

@ -5382,9 +5382,11 @@ function graph_so_by_group($id_group, $width=300, $height=200, $recursive=true,
'SELECT COUNT(id_agente) AS count,
os.name
FROM tagente a
LEFT JOIN tagent_secondary_group g ON g.id_agent = a.id_agente
LEFT JOIN tconfig_os os ON a.id_os = os.id_os
WHERE a.id_grupo IN (%s)
WHERE a.id_grupo IN (%s) OR g.id_group IN (%s)
GROUP BY os.id_os',
implode(',', $id_groups),
implode(',', $id_groups)
);
@ -5466,7 +5468,7 @@ function graph_events_agent_by_group($id_group, $width=300, $height=200, $noWate
}
}
$filter_groups = ' AND te.id_grupo IN ('.implode(',', $id_groups).') ';
$filter_groups = ' AND (te.id_grupo IN ('.implode(',', $id_groups).') OR g.id_group IN ('.implode(',', $id_groups).'))';
// This will give the distinct id_agente, give the id_grupo that goes
// with it and then the number of times it occured. GROUP BY statement
@ -5475,7 +5477,8 @@ function graph_events_agent_by_group($id_group, $width=300, $height=200, $noWate
'SELECT DISTINCT(id_agente) AS id_agente,
COUNT(id_agente) AS count
FROM tevento te
WHERE 1=1 AND estado = 0
LEFT JOIN tagent_secondary_group g ON g.id_agent = te.id_agente
WHERE 1=1 AND estado = 0
%s %s
GROUP BY id_agente
ORDER BY count DESC LIMIT 8',

View File

@ -2501,7 +2501,9 @@ function groups_get_heat_map_agents(array $id_group, float $width=0, float $heig
$id_group = [$id_group];
}
$sql = 'SELECT * FROM tagente WHERE id_grupo IN('.implode(',', $id_group).')';
$sql = 'SELECT * FROM tagente a
LEFT JOIN tagent_secondary_group g ON g.id_agent = a.id_agente
WHERE a.id_grupo IN ('.implode(',', $id_group).') OR g.id_group IN ('.implode(',', $id_group).')';
$all_agents = db_get_all_rows_sql($sql);
if (empty($all_agents)) {
@ -2654,8 +2656,8 @@ function tactical_groups_get_agents_and_monitoring($id_groups, $data='')
if ($data === '') {
$data = [
'total_agents' => groups_agents_total_counters($id_groups, false)['total'],
'monitor_total' => groups_get_total_monitors($id_groups, [], [], false, false, false, false),
'total_agents' => groups_agents_total_counters($id_groups, true)['total'],
'monitor_total' => groups_get_total_monitors($id_groups, [], [], false, false, false, true),
];
}
@ -2719,7 +2721,7 @@ function tactical_groups_get_stats_alerts($id_groups, $data='')
}
$urls = [];
$urls['monitor_alerts'] = $config['homeurl'].'index.php?sec=estado&amp;sec2=operation/agentes/alerts_status&amp;refr=60&ag_group='.$id_groups[0];
$urls['monitor_alerts'] = $config['homeurl'].'index.php?sec=estado&amp;sec2=operation/agentes/alerts_status&amp;refr=60&disabled=all&ag_group='.$id_groups[0];
$urls['monitor_alerts_fired'] = $config['homeurl'].'index.php?sec=estado&amp;sec2=operation/agentes/alerts_status&amp;refr=60&disabled=fired&ag_group='.$id_groups[0];
// Alerts table.
@ -2790,11 +2792,11 @@ function groups_get_stats_modules_status($id_groups, $graph_width=250, $graph_he
if ($data === '') {
$data = [
'monitor_critical' => groups_get_critical_monitors($id_groups, [], [], false, false, false, false),
'monitor_warning' => groups_get_warning_monitors($id_groups, [], [], false, false, false, false),
'monitor_ok' => groups_get_normal_monitors($id_groups, [], [], false, false, false, false),
'monitor_unknown' => groups_get_unknown_monitors($id_groups, [], [], false, false, false, false),
'monitor_not_init' => groups_get_not_init_monitors($id_groups, [], [], false, false, false, false),
'monitor_critical' => groups_get_critical_monitors($id_groups, [], [], false, false, false, true),
'monitor_warning' => groups_get_warning_monitors($id_groups, [], [], false, false, false, true),
'monitor_ok' => groups_get_normal_monitors($id_groups, [], [], false, false, false, true),
'monitor_unknown' => groups_get_unknown_monitors($id_groups, [], [], false, false, false, true),
'monitor_not_init' => groups_get_not_init_monitors($id_groups, [], [], false, false, false, true),
];
}

View File

@ -3303,7 +3303,7 @@ function html_print_input_image($name, $src, $value, $style='', $return=false, $
// If metaconsole is activated and image doesn't exists try to search on normal console.
if (is_metaconsole() === true) {
if (false === @file_get_contents($src, 0, null, 0, 1)) {
if ($src !== null && false === @file_get_contents($src, 0, null, 0, 1)) {
$src = '../../'.$src;
}
}

View File

@ -283,6 +283,10 @@ function servers_get_performance($filter=[])
}
foreach ($counts as $c) {
if (empty($c['modules']) === true) {
continue;
}
switch ($c['server_type']) {
case SERVER_TYPE_DATA:
$data['total_local_modules'] = $c['modules'];
@ -292,7 +296,7 @@ function servers_get_performance($filter=[])
case SERVER_TYPE_SNMP:
case SERVER_TYPE_ENTERPRISE_ICMP:
case SERVER_TYPE_ENTERPRISE_SNMP:
$data['total_network_modules'] = $c['modules'];
$data['total_network_modules'] += $c['modules'];
break;
case SERVER_TYPE_PLUGIN:

View File

@ -1486,32 +1486,34 @@ function ui_format_alert_row(
$actionText .= ui_print_help_tip(__('The default actions will be executed every time that the alert is fired and no other action is executed'), true);
// Is possible manage actions if have LW permissions in the agent group of the alert module.
if (check_acl($config['id_user'], $id_group, 'LM')) {
$actionText .= '<a href="index.php?sec=galertas&sec2=godmode/alerts/alert_list&tab=list&delete_action=1&id_alert='.$alert['id'].'&id_agent='.$agente['alias'].'&id_action='.$action['original_id'].'" onClick="if (!confirm(\' '.__('Are you sure you want to delete alert action?').'\')) return false;">'.html_print_image(
'images/delete.svg',
true,
[
'alt' => __('Delete action'),
'title' => __('Delete action'),
'class' => 'main_menu_icon invert_filter vertical_baseline',
]
).'</a>';
}
if (is_metaconsole() === true) {
if (check_acl($config['id_user'], $id_group, 'LM')) {
$actionText .= '<a href="index.php?sec=galertas&sec2=godmode/alerts/alert_list&tab=list&delete_action=1&id_alert='.$alert['id'].'&id_agent='.$agente['alias'].'&id_action='.$action['original_id'].'" onClick="if (!confirm(\' '.__('Are you sure you want to delete alert action?').'\')) return false;">'.html_print_image(
'images/delete.svg',
true,
[
'alt' => __('Delete action'),
'title' => __('Delete action'),
'class' => 'main_menu_icon invert_filter vertical_baseline',
]
).'</a>';
}
if (check_acl($config['id_user'], $id_group, 'LW')) {
$actionText .= html_print_input_image(
'update_action',
'/images/edit.svg',
1,
'padding:0px;',
true,
[
'title' => __('Update action'),
'class' => 'main_menu_icon invert_filter',
'onclick' => 'show_display_update_action(\''.$action['original_id'].'\',\''.$alert['id'].'\',\''.$alert['id_agent_module'].'\',\''.$action['original_id'].'\',\''.$alert['agent_name'].'\')',
]
);
$actionText .= html_print_input_hidden('id_agent_module', $alert['id_agent_module'], true);
if (check_acl($config['id_user'], $id_group, 'LW')) {
$actionText .= html_print_input_image(
'update_action',
'/images/edit.svg',
1,
'padding:0px;',
true,
[
'title' => __('Update action'),
'class' => 'main_menu_icon invert_filter',
'onclick' => 'show_display_update_action(\''.$action['original_id'].'\',\''.$alert['id'].'\',\''.$alert['id_agent_module'].'\',\''.$action['original_id'].'\',\''.$alert['agent_name'].'\')',
]
);
$actionText .= html_print_input_hidden('id_agent_module', $alert['id_agent_module'], true);
}
}
$actionText .= '<div id="update_action-div-'.$alert['id'].'" class="invisible">';
@ -1646,7 +1648,7 @@ function ui_format_alert_row(
$data[$index['actions']] .= '<tr class="datos2">';
$data[$index['actions']] .= '<td class="w50p">'.html_print_label_input_block(
__('Agent'),
ui_print_truncate_text($agente['alias'], 'agent_small', false, true, true, '[&hellip;]')
ui_print_truncate_text($agente['alias'], 'agent_medium', false, true, true, '[&hellip;]')
).'</td>';
$data[$index['actions']] .= '<td class="w50p">'.html_print_label_input_block(
__('Module'),

View File

@ -663,11 +663,14 @@ class Group extends Entity
ultimo_contacto_remoto,
fired_count
FROM tagente t
LEFT JOIN tagent_secondary_group g ON g.id_agent = t.id_agente
WHERE disabled = 0 AND
total_count <> notinit_count AND
id_grupo IN (%s)
(id_grupo IN (%s) OR id_group IN (%s))
%s %s',
implode(',', $id_groups),
implode(',', $id_groups),
$order,
$pagination
);
@ -686,11 +689,13 @@ class Group extends Entity
ultimo_contacto_remoto,
fired_count
FROM tagente t
LEFT JOIN tagent_secondary_group g ON g.id_agent = t.id_agente
WHERE disabled = 0 AND
total_count <> notinit_count AND
id_grupo IN (%s)
(id_grupo IN (%s) OR id_group IN (%s))
%s',
implode(',', $id_groups),
implode(',', $id_groups),
$order,
);

View File

@ -4,7 +4,6 @@
.ui-dialog .ui-corner-all .ui-widget {
border-radius: 0;
margin: 0;
padding: 0;
border: none;
}
@ -217,7 +216,7 @@ a.ui-state-default > span:hover {
color: #000;
}
.ui-widget-header {
height: 20px !important;
height: fit-content !important;
}
.ui-dialog .ui-widget-header {
margin: 3px 3px 0px 3px;

View File

@ -5089,7 +5089,7 @@ div#dialog_messages table th:last-child {
position: absolute;
cursor: pointer;
top: 5px;
left: 0;
left: 5px;
right: 0;
bottom: 0;
background-color: #ccc;

View File

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

View File

@ -349,12 +349,6 @@ if (is_metaconsole() === true) {
}
}
$alert_action = empty(alerts_get_alert_actions_filter()) === false
? alerts_get_alert_actions_filter()
: ['' => __('No actions')];
ob_start();
if ($agent_view_page === true) {

View File

@ -201,6 +201,10 @@ $search_recursive_groups = get_parameter(
'filter[search_recursive_groups]',
($filter['search_recursive_groups'] ?? '')
);
$search_recursive_groups = get_parameter(
'filter[private_filter_event]',
($filter['private_filter_event'] ?? '')
);
$id_group_filter = get_parameter(
'filter[id_group_filter]',
($filter['id_group'] ?? '')
@ -509,10 +513,22 @@ if (is_ajax() === true) {
$tmp->evento = str_replace('"', '', io_safe_output($tmp->evento));
$event_text = $tmp->evento;
if (strlen($tmp->evento) >= 40) {
$tmp->evento = ui_print_truncate_text(
$tmp->evento,
40,
$tmp->evento = ui_print_truncate_text(
$tmp->evento,
$config['item_title_size_text'],
false,
true,
false,
'&hellip;',
true,
true,
);
if (empty($tmp->module_name) === false) {
$tmp->module_name = ui_print_truncate_text(
$tmp->module_name,
'module_medium',
false,
true,
false,
@ -563,7 +579,7 @@ if (is_ajax() === true) {
$tmp->agent_name = ui_print_truncate_text(
$tmp->agent_name,
'agent_small',
'agent_medium',
false,
true,
false,
@ -942,7 +958,7 @@ if (is_ajax() === true) {
if (strlen($tmp->id_agentmodule) >= 10) {
$tmp->id_agentmodule = ui_print_truncate_text(
$tmp->id_agentmodule,
10,
'module_small',
false,
true,
false,
@ -1322,6 +1338,7 @@ if ($loaded_filter !== false && $from_event_graph != 1 && isset($fb64) === false
$filter_only_alert = $filter['filter_only_alert'];
$search_secondary_groups = ($filter['search_secondary_groups'] ?? 0);
$private_filter_event = ($filter['private_filter_user'] ?? 0);
$search_recursive_groups = ($filter['search_recursive_groups'] ?? 0);
$id_group_filter = $filter['id_group_filter'];
$date_from = $filter['date_from'];
@ -1874,6 +1891,9 @@ if (enterprise_hook(
* Load filter form.
*/
// User private filter process.
$inputs[] = html_print_input_hidden('id_filter_event', $load_filter_id, true);
// Group.
if ($id_group === null) {
$id_group = 0;
@ -1907,7 +1927,7 @@ $data = html_print_checkbox_switch(
$in_group = '<div class="display-initial">';
$in_group .= $data;
$in_group .= '<label class="vert-align-bottom pdd_r_20px">';
$in_group .= '<label class="vert-align-bottom pdd_r_15px">';
$in_group .= __('Group recursion');
$in_group .= ui_print_help_tip(
__('WARNING: This could cause a performace impact.'),
@ -2058,6 +2078,8 @@ $in = '<div class="filter_input"><label>'.__('Severity').'</label>';
$in .= $data.'</div>';
$inputs[] = $in;
// User private filter.
$inputs[] = html_print_input_hidden('private_filter_event', $private_filter_event, true);
// Trick view in table.
$inputs[] = '<div class="w100p pdd_t_15px"></div>';
@ -3351,7 +3373,8 @@ $(document).ready( function() {
data: {
page: 'include/ajax/events',
save_filter_modal: 1,
current_filter: $('#latest_filter_id').val()
current_filter: $('#hidden-id_filter_event').val(),
private_filter_event: $('#hidden-private_filter_event').val()
},
success: function (data){
$('#save-modal-filter')

View File

@ -3,7 +3,7 @@
#
%define name pandorafms_console
%define version 7.0NG.773.3
%define release 230912
%define release 230919
# User and Group under which Apache is running
%define httpd_name httpd

View File

@ -3,7 +3,7 @@
#
%define name pandorafms_console
%define version 7.0NG.773.3
%define release 230912
%define release 230919
# User and Group under which Apache is running
%define httpd_name httpd

View File

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

View File

@ -1301,6 +1301,7 @@ CREATE TABLE IF NOT EXISTS `tevent_filter` (
`custom_data` VARCHAR(500) DEFAULT '',
`custom_data_filter_type` TINYINT UNSIGNED DEFAULT 0,
`owner_user` TEXT,
`private_filter_user` TEXT,
PRIMARY KEY (`id_filter`)
) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4;

View File

@ -2642,7 +2642,7 @@ SET @short_name = 'pandorafms.vmware';
SET @name = 'VMware';
SET @section = 'app';
SET @description = 'Monitor&#x20;ESXi&#x20;hosts,&#x20;datastores&#x20;and&#x20;VMs&#x20;from&#x20;a&#x20;specific&#x20;datacenter';
SET @version = '1.0';
SET @version = '1.1';
INSERT IGNORE INTO `tdiscovery_apps` (`id_app`, `short_name`, `name`, `section`, `description`, `version`) VALUES ('', @short_name, @name, @section, @description, @version);
SELECT @id_app := `id_app` FROM `tdiscovery_apps` WHERE `short_name` = @short_name;

View File

@ -8,6 +8,7 @@ use POSIX qw(strftime);
use PandoraFMS::DB;
use constant DATASERVER => 0;
use constant ALERTSERVER => 21;
use Scalar::Util qw(looks_like_number);
@ -159,6 +160,18 @@ sub pandora_self_monitoring ($$) {
if (!defined($queued_modules)) {
$queued_modules = 0;
}
my $queued_alerts = get_db_value ($dbh, "SELECT count(id) FROM talert_execution_queue");
if (!defined($queued_alerts)) {
$queued_alerts = 0;
}
my $alert_server_status = get_db_value ($dbh, "SELECT status FROM tserver WHERE server_type = ?", ALERTSERVER);
if (!defined($alert_server_status || $alert_server_status eq "") ) {
$alert_server_status = 0;
}
my $dbmaintance;
if ($RDBMS eq 'postgresql') {
@ -193,7 +206,19 @@ sub pandora_self_monitoring ($$) {
$xml_output .=" <type>generic_data</type>\n";
$xml_output .=" <data>$queued_modules</data>\n";
$xml_output .=" </module>\n";
$xml_output .=" <module>\n";
$xml_output .=" <name>Queued_Alerts</name>\n";
$xml_output .=" <type>generic_data</type>\n";
$xml_output .=" <data>$queued_alerts</data>\n";
$xml_output .=" </module>\n";
$xml_output .=" <module>\n";
$xml_output .=" <name>Alert_Server_Status</name>\n";
$xml_output .=" <type>generic_proc</type>\n";
$xml_output .=" <data>$alert_server_status</data>\n";
$xml_output .=" </module>\n";
$xml_output .=" <module>\n";
$xml_output .=" <name>Agents_Unknown</name>\n";
$xml_output .=" <type>generic_data</type>\n";

View File

@ -1,5 +1,5 @@
package: pandorafms-server
Version: 7.0NG.773.3-230912
Version: 7.0NG.773.3-230919
Architecture: all
Priority: optional
Section: admin

View File

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

View File

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

View File

@ -127,6 +127,7 @@ use JSON qw(decode_json encode_json);
use MIME::Base64;
use Text::ParseWords;
use Math::Trig; # Math functions
use constant ALERTSERVER => 21;
# Debugging
#use Data::Dumper;
@ -5687,7 +5688,7 @@ sub pandora_server_statistics ($$) {
$server->{"modules_total"} = get_db_value ($dbh, "SELECT COUNT(tagent_module_inventory.id_agent_module_inventory) FROM tagente, tagent_module_inventory WHERE tagente.disabled=0 AND tagent_module_inventory.id_agente = tagente.id_agente");
# Calculate lag
$lag_row = get_db_single_row ($dbh, "SELECT COUNT(tagent_module_inventory.id_agent_module_inventory) AS module_lag, AVG(UNIX_TIMESTAMP() - utimestamp - tagent_module_inventory.interval) AS lag
$lag_row = get_db_single_row ($dbh, "SELECT COUNT(tagent_module_inventory.id_agent_module_inventory) AS `module_lag`, AVG(UNIX_TIMESTAMP() - utimestamp - tagent_module_inventory.interval) AS `lag`
FROM tagente, tagent_module_inventory
WHERE utimestamp > 0
AND tagent_module_inventory.id_agente = tagente.id_agente
@ -5736,8 +5737,8 @@ sub pandora_server_statistics ($$) {
if ($server->{"server_type"} != DATASERVER){
$lag_row = get_db_single_row (
$dbh,
"SELECT COUNT(tam.id_agente_modulo) AS module_lag,
AVG(UNIX_TIMESTAMP() - tae.last_execution_try - tae.current_interval) AS lag
"SELECT COUNT(tam.id_agente_modulo) AS `module_lag`,
AVG(UNIX_TIMESTAMP() - tae.last_execution_try - tae.current_interval) AS `lag`
FROM (
SELECT tagente_estado.last_execution_try, tagente_estado.current_interval, tagente_estado.id_agente_modulo
FROM tagente_estado
@ -5762,8 +5763,8 @@ sub pandora_server_statistics ($$) {
else {
$lag_row = get_db_single_row (
$dbh,
"SELECT COUNT(tam.id_agente_modulo) AS module_lag,
AVG(UNIX_TIMESTAMP() - tae.last_execution_try - tae.current_interval) AS lag
"SELECT COUNT(tam.id_agente_modulo) AS `module_lag`,
AVG(UNIX_TIMESTAMP() - tae.last_execution_try - tae.current_interval) AS `lag`
FROM (
SELECT tagente_estado.last_execution_try, tagente_estado.current_interval, tagente_estado.id_agente_modulo
FROM tagente_estado
@ -6132,6 +6133,18 @@ sub pandora_self_monitoring ($$) {
if (!defined($queued_modules)) {
$queued_modules = 0;
}
my $queued_alerts = get_db_value ($dbh, "SELECT count(id) FROM talert_execution_queue");
if (!defined($queued_alerts)) {
$queued_alerts = 0;
}
my $alert_server_status = get_db_value ($dbh, "SELECT status FROM tserver WHERE server_type = ?", ALERTSERVER);
if (!defined($alert_server_status) || $alert_server_status eq "") {
$alert_server_status = 0;
}
my $pandoradb = 0;
my $pandoradb_tstamp = get_db_value ($dbh, "SELECT `value` FROM tconfig WHERE token = 'db_maintance'");
@ -6158,6 +6171,18 @@ sub pandora_self_monitoring ($$) {
$xml_output .=" <type>generic_data</type>";
$xml_output .=" <data>$queued_modules</data>";
$xml_output .=" </module>";
$xml_output .=" <module>\n";
$xml_output .=" <name>Queued_Alerts</name>\n";
$xml_output .=" <type>generic_data</type>\n";
$xml_output .=" <data>$queued_alerts</data>\n";
$xml_output .=" </module>\n";
$xml_output .=" <module>\n";
$xml_output .=" <name>Alert_Server_Status</name>\n";
$xml_output .=" <type>generic_proc</type>\n";
$xml_output .=" <data>$alert_server_status</data>\n";
$xml_output .=" </module>\n";
$xml_output .=" <module>";
$xml_output .=" <name>Agents_Unknown</name>";

View File

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

View File

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

View File

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

View File

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

View File

@ -147,154 +147,4 @@ be67e5298c830c0bb582556f
63f5d1404aea4377779edf35
b03831cce718125cb9612c07
5465b26fd45d86b059066cc2
5351de84d2fd638b138ba27b
6c63000157aed37fa8c0c022
8d3c18c7fbe518694c6bdb22
615ec092b6f63bb14a2bb42e
61de25cf8e12926c28aeffdc
2b96bc1c8f6f81a5437b61bf
ba1f4fcf3954e0efe5d68c83
ee5bd3e1a937b90562677f1d
0cf18ae18b0c680d00cb4d2e
abf72b0d66f90bd6e67c43c6
f263d033bb07e0b8cd405224
418ddf02720649b40db2dd67
01d1a735aa980326d385ea65
0cc3860bb0a3fd5822b25ea4
b0b89dbebfab05fafd6cf9dd
2fcbb999444db5c0c77c2ec2
f49a97b3531b8ab8d487c7a7
ffb66d5003620e2fa47ef8ea
04da742ab6c99b5c44f9f0cc
dc310a9d42d7c367671ffbf9
b0f5c4ee8d327449ef2103e6
5bd2ce604ed7c820169f0ac2
57f874a6e41baa5a1196b15f
b43142736205ad1011f4a5a6
50cf8523e5090251516eecb0
ebad61d47be209696f9d41aa
66bc5976a98266560d1867ff
3c37fc452e9ad36cd7adcb1a
4ac8c3db63a69ce883f3fcf5
6c89e2bb90b9ab95f4adde3c
917de5ece0a5ef663a8f44e7
b50eba76cf29aca3cf696d7e
74264c913ac1e141db78708a
2b6c93011f62cffb5c085886
700617c377952010272b9522
dac10c8ddf7c45e55d8028af
053328a6ff4f2773eebe76fe
2d7390260285c272688ae1e8
fa30c9ee6fb1e2f00d7ccb77
0ca6db378a05246f30c8b820
9ad6f959de166cc1475040ea
23b4702f4dfb350085e77482
4198a8ab80780c5d9b0d82d5
baebd530dfc47ac77ea42d2a
636d2ab4e018b5542e429f5e
40ae44193af360eea68b6f0b
dd47b39e494a62a4f5b6bef8
240339c9dcd159595c1edbf3
0f11840efe364ca6bbb17f43
8522e203fb4b53e2bd6d6f82
f134d9b501fa40b17993beee
d0483306f2f972aacfb4fcea
926ee4e0a80455cfee517f8b
c188a327bc66df4878cb3e8b
c874083c1d932bb4ade6d028
be2271d8da327f97e05c1c60
9ca7451d3f261682ec717547
9eb46e2a5fd072c5267d7432
41e8f3f7733f87e16b773bad
f642220cd19f84154e4dd972
fe3d9f6433883332b464b7ca
3e9648ccf60b1fa712ea8590
b7da7292e9418889bc957bd7
fb4a392d386eca19eec9215e
34188e4a6590877b2dbb67b0
e233cb364659dea13dee1fd8
757b8330465df34879414b7d
5e0f80102fee69d0742934b2
d72124afc78e9b3f91550497
21c77bfe67c6e99f73323f42
afa8ce345db6300882858f93
886cc8b32ed80f4c69edb990
64ea275ce73ef4070cefca19
c676f1ffe5bdce4e1d3643ed
baca61ab59568605e3ec8899
1610892c53a071ed02d20c75
3321fb7111d74e532932d262
29583747ac9fbf0bf21c1574
f51210b47a6e847dcfb52f94
63c95735ba96c65d2d45b23d
679c4e3acb15ebec6ecc7529
42da0760b02d50c6587a8c31
e42de775dcfcc3c950c1cff5
ae5791cf265badebd39c78d9
f66c123309525eeb81b47e92
7cddc2b9ed6b4df83c72fcbe
e69cc74632fdaa06f76f708a
7cfd19c2eeaef2c0537332be
d27cdcea69f4e49fbae06f4d
bdfaa2ec52319f0e6533e826
d59452cdfce11e21682a791f
cbb74f2d35d54557abdbc2da
369a4e6f128475bc9f87ef42
90bf992a98d0b768cbc50520
1fea663421dae7b418b9b15f
f9fc5505565c43cebc1545f9
d02a8f77fbb2b7f384a99949
279ff35e17c7f6b6a043fde7
9cf7725d3a97d9aa9e529ce6
1f465b328b349502c0953b2d
283fad60fa48ea2075a0e516
ef5d9e841a02665c54d8fa7f
b6023425cb4a1503726b3135
7fb8a1a734c24cc22a5c75eb
da38d78e83c9288e4cd60cca
2a928a6498ae8e0b29675c25
d2194ab5b0e48c2c1f213860
53acafcd86a61ce55688ebef
65608eeebc7d9fe2912635ed
fafb0273e3b04deb1edb2628
baf07d1f28416da065b6771f
c2ee8e58209102fdd0bb341c
f8e92e00670f65c29c4617c9
a83661705134029ae344176d
fc02c24e172d12a29b17eede
2632f143ffe3f64e63e4ba32
847120de4b72f59263d160f1
5be36ff5b668eb93823974b2
cdd8fe5081225519b5fc28af
53569cbaedb9265839290a6c
decca89ea0e8944fd93fcd24
4b10511d840b7f5129ed6190
5c4a1904de5f90f4d5dd749a
49c47514c3308df82fcd6b79
15af3e182c00000eea12f8e5
a9645c4a43ad211d9ae9a406
dcffa4e5eee8f966b1edcdaf
75b25f796f1e392f45c3a737
0ad5f0b96946ebcabd0457e9
2f9128177cab74e0bad61189
49ed14b81e0a166ccf335b4a
dfe100788326c45dfb84579c
2616f38caef9decae47e5023
99b2d0eb14ac19d1cfedd86e
fb1d4c42ea70fad330b5c5ee
b6c560867faa3b41b1f5d4fa
1167fb22e86098ef684eb702
a2e2c2ee8ec87d4e5d59eb22
b228beac094e16a0fa3cb528
ea0de9aad68deed0a4df3e71
e50cb420497d928ef9827800
3bb39890ca4a6da941e01782
73391f2914465c3f2335e24a
f8b2f512cc0cbc024e2cd377
4f816b0d36c934b44dbd5bc0
817edf1e2637fef229752a5f
4466f97959df7247f7410fbe
cc85c727080e9d6eb75ef513
7e27f012167ed8bedc4bd635
98a445ff41a81a0a752aff25
3b339e213dd613c4efd878c1
5351de84d2fd638b138ba27b

View File

@ -35,7 +35,7 @@ use PandoraFMS::Config;
use PandoraFMS::DB;
# version: define current version
my $version = "7.0NG.773.3 Build 230912";
my $version = "7.0NG.773.3 Build 230919";
# Pandora server configuration
my %conf;

View File

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