Merge branch 'develop' into ent-8365-ncm-fase-3

This commit is contained in:
Jonathan 2023-12-14 08:38:52 +01:00
commit 53b56b31af
53 changed files with 575 additions and 112 deletions

View File

@ -1,5 +1,5 @@
package: pandorafms-agent-unix package: pandorafms-agent-unix
Version: 7.0NG.774-231213 Version: 7.0NG.774-231214
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.774-231213" pandora_version="7.0NG.774-231214"
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.774'; use constant AGENT_VERSION => '7.0NG.774';
use constant AGENT_BUILD => '231213'; use constant AGENT_BUILD => '231214';
# 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.774 %define version 7.0NG.774
%define release 231213 %define release 231214
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.774 %define version 7.0NG.774
%define release 231213 %define release 231214
%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.774 %define version 7.0NG.774
%define release 231213 %define release 231214
%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.774 %define version 7.0NG.774
%define release 231213 %define release 231214
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.774 %define version 7.0NG.774
%define release 231213 %define release 231214
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.774" PI_VERSION="7.0NG.774"
PI_BUILD="231213" PI_BUILD="231214"
OS_NAME=`uname -s` OS_NAME=`uname -s`
FORCE=0 FORCE=0

View File

@ -186,7 +186,7 @@ UpgradeApplicationID
{} {}
Version Version
{231213} {231214}
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.774 Build 231213") #define PANDORA_VERSION ("7.0NG.774 Build 231214")
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.774(Build 231213))" VALUE "ProductVersion", "(7.0NG.774(Build 231214))"
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.774-231213 Version: 7.0NG.774-231214
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.774-231213" pandora_version="7.0NG.774-231214"
package_pear=0 package_pear=0
package_pandora=1 package_pandora=1

View File

@ -1237,11 +1237,24 @@ if ($new_agent === false) {
$actionButtons .= html_print_input_hidden('id_agente', $id_agente); $actionButtons .= html_print_input_hidden('id_agente', $id_agente);
if (is_management_allowed() === true) { if (is_management_allowed() === true) {
$clusters = agents_get_agent_belongs_cluster($id_agente);
$cluster_belongs = '';
if (empty($clusters) === false) {
$clusters = array_reduce(
$clusters,
function ($carry, $item) {
$carry[] = $item['name'];
return $carry;
}
);
$cluster_belongs = implode(', ', $clusters);
}
$actionButtons .= html_print_button( $actionButtons .= html_print_button(
__('Delete agent'), __('Delete agent'),
'deleteAgent', 'deleteAgent',
false, false,
'deleteAgentDialog('.$id_agente.')', 'deleteAgentDialog('.$id_agente.', "'.$cluster_belongs.'")',
[ [
'icon' => 'delete', 'icon' => 'delete',
'mode' => 'secondary dialog_opener', 'mode' => 'secondary dialog_opener',
@ -1289,10 +1302,18 @@ ui_require_jquery_file('bgiframe');
} }
} }
function deleteAgentDialog($idAgente) { function deleteAgentDialog($idAgente, cluster) {
var msg_cluster = '';
if(cluster) {
msg_cluster = "<?php echo __('This agent belongs to the clusters'); ?>";
msg_cluster += ': ';
msg_cluster += cluster;
msg_cluster += '. ';
}
confirmDialog({ confirmDialog({
title: "<?php echo __('Delete agent'); ?>", title: "<?php echo __('Delete agent'); ?>",
message: "<?php echo __('This action is not reversible. Are you sure'); ?>", message: msg_cluster + "<?php echo __('This action is not reversible. Are you sure'); ?>",
onAccept: function() { onAccept: function() {
window.location.assign('index.php?sec=gagente&sec2=godmode/agentes/modificar_agente&borrar_agente='+$idAgente); window.location.assign('index.php?sec=gagente&sec2=godmode/agentes/modificar_agente&borrar_agente='+$idAgente);
} }

View File

@ -2258,6 +2258,28 @@ if ($update_module || $create_module
|| ($module_in_policy && !$module_linked) || ($module_in_policy && !$module_linked)
) { ) {
if ($success_action > 0) { if ($success_action > 0) {
if (empty($old_configuration_data) === true
&& empty($configuration_data) === true && $disabled === '0'
&& ($enable_module || $disable_module)
) {
$modulo_nombre = io_safe_output(
db_get_value(
'nombre',
'tagente_modulo',
'id_agente_modulo',
(empty($disable_module) === false) ? $disable_module : $enable_module
)
);
$old_configuration_data = config_agents_get_module_from_conf(
$id_agente,
$modulo_nombre
);
$configuration_data = $old_configuration_data;
$disabled = (empty($disable_module) === false) ? true : false;
}
enterprise_hook( enterprise_hook(
'config_agents_write_module_in_conf', 'config_agents_write_module_in_conf',
[ [
@ -2406,7 +2428,6 @@ if ($disable_module) {
$modulo_nombre = io_safe_output($modulo_nombre['nombre']); $modulo_nombre = io_safe_output($modulo_nombre['nombre']);
if ($result === NOERR) { if ($result === NOERR) {
enterprise_hook('config_agents_disable_module_conf', [$id_agente, $disable_module]);
db_pandora_audit( db_pandora_audit(
AUDIT_LOG_MODULE_MANAGEMENT, AUDIT_LOG_MODULE_MANAGEMENT,
'Disable #'.$disable_module.' | '.$modulo_nombre.' | '.$agent['alias'] 'Disable #'.$disable_module.' | '.$modulo_nombre.' | '.$agent['alias']

View File

@ -958,12 +958,33 @@ if ($agents !== false) {
); );
if ($check_aw === true && is_management_allowed() === true) { if ($check_aw === true && is_management_allowed() === true) {
if ($agent['id_os'] != CLUSTER_OS_ID) { $clusters = agents_get_agent_belongs_cluster($agent['id_agente']);
$onClickActionDeleteAgent = 'if (!confirm(\' '.__('Are you sure?').'\')) return false;'; $cluster_belongs = '';
} else { if (empty($clusters) === false) {
$onClickActionDeleteAgent = 'if (!confirm(\' '.__('WARNING! - You are going to delete a cluster agent. Are you sure?').'\')) return false;'; $clusters = array_reduce(
$clusters,
function ($carry, $item) {
$carry[] = $item['name'];
return $carry;
}
);
$cluster_belongs = implode(', ', $clusters);
} }
$msg = '';
if ($agent['id_os'] == CLUSTER_OS_ID) {
$msg .= __('You are going to delete a cluster agent');
$msg .= '. ';
} else if (empty($cluster_belongs) === false) {
$msg .= __('This agent belongs to the clusters');
$msg .= ': ';
$msg .= $cluster_belongs;
$msg .= '. ';
}
$msg .= __('Are you sure?');
$onClickActionDeleteAgent = 'if (!confirm(\' '.$msg.'\')) return false;';
$agentActionButtons[] = html_print_menu_button( $agentActionButtons[] = html_print_menu_button(
[ [
'href' => ui_get_full_url( 'href' => ui_get_full_url(

View File

@ -154,7 +154,7 @@ if ($is_management_allowed === true && $update_group === true) {
$subcheck = db_get_value('name', 'tmodule_group', 'id_mg', $id_group); $subcheck = db_get_value('name', 'tmodule_group', 'id_mg', $id_group);
if ($name) { if ($name) {
if (!$check || $subcheck == $name) { if ($check === false || strcasecmp($subcheck, $name) === 0) {
$result = db_process_sql_update( $result = db_process_sql_update(
'tmodule_group', 'tmodule_group',
['name' => $name], ['name' => $name],

View File

@ -117,6 +117,8 @@ $exception_condition = REPORT_EXCEPTION_CONDITION_EVERYTHING;
$exception_condition_value = 10; $exception_condition_value = 10;
$modulegroup = 0; $modulegroup = 0;
$period = SECONDS_1DAY; $period = SECONDS_1DAY;
$period_time_service_level = '28800';
$show_agents = false;
$search = ''; $search = '';
$full_text = 0; $full_text = 0;
$log_number = 1000; $log_number = 1000;
@ -882,6 +884,28 @@ switch ($action) {
$idAgentModule = $module; $idAgentModule = $module;
break; break;
case 'service_level':
$description = $item['description'];
$es = json_decode($item['external_source'], true);
$period_time_service_level = $es['period_time_service_level'];
$show_agents = $es['show_agents'];
// Decode agents and modules.
$id_agents = json_decode(
io_safe_output(base64_decode($es['id_agents'])),
true
);
$module = json_decode(
io_safe_output(base64_decode($es['module'])),
true
);
$recursion = $item['recursion'];
$group = $item['id_group'];
$modulegroup = $item['id_module_group'];
$idAgentModule = $module;
break;
case 'end_of_life': case 'end_of_life':
$es = json_decode($item['external_source'], true); $es = json_decode($item['external_source'], true);
@ -1152,6 +1176,7 @@ switch ($action) {
case 'sumatory': case 'sumatory':
case 'database_serialized': case 'database_serialized':
case 'last_value': case 'last_value':
case 'service_level':
case 'monitor_report': case 'monitor_report':
case 'min_value': case 'min_value':
case 'max_value': case 'max_value':
@ -1662,6 +1687,53 @@ if (is_metaconsole() === true) {
</td> </td>
</tr> </tr>
<tr id="row_period_service_level" class="datos">
<td class="bolder">
<?php
echo __('Time lapse');
ui_print_help_tip(
__('This is the range, or period of time over which the report renders the information for this report type. For example, a week means data from a week ago from now. ')
);
?>
</td>
<td >
<?php
$fields_time_service_level = [
'604800' => __('1 week'),
'172800' => __('48 hours'),
'86400' => __('24 hours'),
'43200' => __('12 hours'),
'28800' => __('8 hours'),
];
html_print_select(
$fields_time_service_level,
'period_time_service_level',
$period_time_service_level,
);
?>
</td>
</tr>
<tr id="row_show_agents" class="datos">
<td class="bolder" class="datos">
<?php
echo __('Show agents');
?>
</td>
<td >
<?php
html_print_checkbox_switch(
'show_agents',
'1',
$show_agents,
false,
false,
);
?>
</td>
</tr>
<tr id="row_period_range" class="datos"> <tr id="row_period_range" class="datos">
<td class="bolder"> <td class="bolder">
<?php <?php
@ -2334,7 +2406,7 @@ if (is_metaconsole() === true) {
$modulegroup, $modulegroup,
$id_agents, $id_agents,
!$selection_a_m, !$selection_a_m,
false true
); );
} }
@ -5933,8 +6005,13 @@ $(document).ready (function () {
switch (type){ switch (type){
case 'agent_module': case 'agent_module':
case 'agent_module_status': case 'agent_module_status':
case 'service_level':
case 'alert_report_actions': case 'alert_report_actions':
var agents_multiple = $('#id_agents2').val(); var agents_multiple = $('#id_agents2').val();
if (agents_multiple.length == 0) {
dialog_message('#message_no_agent');
return false;
}
var modules_multiple = $('#module').val(); var modules_multiple = $('#module').val();
$('#hidden-id_agents2-multiple-text').val(JSON.stringify(agents_multiple)); $('#hidden-id_agents2-multiple-text').val(JSON.stringify(agents_multiple));
$('#hidden-module-multiple-text').val(JSON.stringify(modules_multiple)); $('#hidden-module-multiple-text').val(JSON.stringify(modules_multiple));
@ -5960,6 +6037,7 @@ $(document).ready (function () {
case 'agent_configuration': case 'agent_configuration':
case 'module_histogram_graph': case 'module_histogram_graph':
case 'increment': case 'increment':
case 'service_level':
if ($("#hidden-id_agent").val() == 0) { if ($("#hidden-id_agent").val() == 0) {
dialog_message('#message_no_agent'); dialog_message('#message_no_agent');
return false; return false;
@ -6120,8 +6198,13 @@ $(document).ready (function () {
switch (type){ switch (type){
case 'agent_module': case 'agent_module':
case 'agent_module_status': case 'agent_module_status':
case 'service_level':
case 'alert_report_actions': case 'alert_report_actions':
var agents_multiple = $('#id_agents2').val(); var agents_multiple = $('#id_agents2').val();
if (agents_multiple.length == 0) {
dialog_message('#message_no_agent');
return false;
}
var modules_multiple = $('#module').val(); var modules_multiple = $('#module').val();
$('#hidden-id_agents2-multiple-text').val(JSON.stringify(agents_multiple)); $('#hidden-id_agents2-multiple-text').val(JSON.stringify(agents_multiple));
$('#hidden-module-multiple-text').val(JSON.stringify(modules_multiple)); $('#hidden-module-multiple-text').val(JSON.stringify(modules_multiple));
@ -6147,6 +6230,7 @@ $(document).ready (function () {
case 'agent_configuration': case 'agent_configuration':
case 'module_histogram_graph': case 'module_histogram_graph':
case 'increment': case 'increment':
case 'service_level':
if ($("#hidden-id_agent").val() == 0) { if ($("#hidden-id_agent").val() == 0) {
dialog_message('#message_no_agent'); dialog_message('#message_no_agent');
return false; return false;
@ -7142,6 +7226,9 @@ function chooseType() {
$("#row_agent").hide(); $("#row_agent").hide();
$("#row_module").hide(); $("#row_module").hide();
$("#row_search").hide(); $("#row_search").hide();
$("#row_period").hide();
$("#row_period_service_level").hide();
$("#row_show_agents").hide();
$("#row_log_number").hide(); $("#row_log_number").hide();
$("#row_period1").hide(); $("#row_period1").hide();
$("#row_period2").hide(); $("#row_period2").hide();
@ -7842,6 +7929,22 @@ function chooseType() {
} }
$("#row_historical_db_check").hide(); $("#row_historical_db_check").hide();
break; break;
case 'service_level':
$("#row_period_service_level").show();
$("#row_show_agents").show();
$("#row_description").show();
$("#row_group").show();
$("#select_agent_modules").show();
$("#agents_modules_row").show();
$("#modules_row").show();
$("#row_historical_db_check").hide();
loadGeneralAgents();
$("#combo_group").change(function() {
loadGeneralAgents($(this).val());
});
$("#row_module_group").show();
break;
case 'agent_module': case 'agent_module':
$("#row_module_group").show(); $("#row_module_group").show();

View File

@ -1730,10 +1730,20 @@ switch ($action) {
$good_format = true; $good_format = true;
break; break;
case 'service_level':
$es['period_time_service_level'] = get_parameter('period_time_service_level', '28800');
$es['show_agents'] = get_parameter('show_agents', false);
case 'agent_module': case 'agent_module':
case 'agent_module_status': case 'agent_module_status':
$agents_to_report_text = get_parameter('id_agents2-multiple-text', ''); $agents_to_report_text = get_parameter('id_agents2-multiple-text', '');
if ($agents_to_report_text === '' || $agents_to_report_text === 'null') {
$agents_to_report_text = io_safe_input(json_encode(get_parameter('id_agents2', '')));
}
$modules_to_report_text = get_parameter('module-multiple-text', ''); $modules_to_report_text = get_parameter('module-multiple-text', '');
if ($modules_to_report_text === '' || $modules_to_report_text === 'null') {
$modules_to_report_text = io_safe_input(json_encode(get_parameter('module', '')));
}
// Decode json check modules. // Decode json check modules.
$agents_to_report = json_decode( $agents_to_report = json_decode(
@ -1745,11 +1755,16 @@ switch ($action) {
true true
); );
$es['module'] = get_same_modules_all( $es['module'] = get_same_modules_all(
$agents_to_report, $agents_to_report,
$modules_to_report $modules_to_report
); );
if ((bool) is_metaconsole() === true) {
$es['module'] = $modules_to_report;
}
// Encode json modules and agents. // Encode json modules and agents.
$es['module'] = base64_encode(json_encode($es['module'])); $es['module'] = base64_encode(json_encode($es['module']));
$es['id_agents'] = base64_encode(json_encode($agents_to_report)); $es['id_agents'] = base64_encode(json_encode($agents_to_report));
@ -2800,10 +2815,20 @@ switch ($action) {
$good_format = true; $good_format = true;
break; break;
case 'service_level':
$es['period_time_service_level'] = get_parameter('period_time_service_level', '28800');
$es['show_agents'] = get_parameter('show_agents', false);
case 'agent_module': case 'agent_module':
case 'agent_module_status': case 'agent_module_status':
$agents_to_report_text = get_parameter('id_agents2-multiple-text'); $agents_to_report_text = get_parameter('id_agents2-multiple-text', '');
if ($agents_to_report_text === '' || $agents_to_report_text === 'null') {
$agents_to_report_text = io_safe_input(json_encode(get_parameter('id_agents2', '')));
}
$modules_to_report_text = get_parameter('module-multiple-text', ''); $modules_to_report_text = get_parameter('module-multiple-text', '');
if ($modules_to_report_text === '' || $modules_to_report_text === 'null') {
$modules_to_report_text = io_safe_input(json_encode(get_parameter('module', '')));
}
// Decode json check modules. // Decode json check modules.
$agents_to_report = json_decode( $agents_to_report = json_decode(
@ -2820,11 +2845,14 @@ switch ($action) {
$modules_to_report $modules_to_report
); );
if ((bool) is_metaconsole() === true) {
$es['module'] = $modules_to_report;
}
// Encode json modules and agents. // Encode json modules and agents.
$es['module'] = base64_encode(json_encode($es['module'])); $es['module'] = base64_encode(json_encode($es['module']));
$es['id_agents'] = base64_encode(json_encode($agents_to_report)); $es['id_agents'] = base64_encode(json_encode($agents_to_report));
$es['show_type'] = get_parameter('show_type', 0); $es['show_type'] = get_parameter('show_type', 0);
$values['external_source'] = json_encode($es); $values['external_source'] = json_encode($es);
$good_format = true; $good_format = true;
break; break;

View File

@ -1422,6 +1422,14 @@ class DiscoveryTaskList extends HTML
$table->rowid = []; $table->rowid = [];
$table->data = []; $table->data = [];
$countErrors = 1;
$tableErrors = new StdClasS();
$tableErrors->class = 'databox data';
$tableErrors->width = '75%';
$tableErrors->styleTable = 'margin: 2em auto 0;border: 1px solid #ddd;background: white;';
$tableErrors->rowid = [];
$tableErrors->data = [];
if ($task['review_mode'] == DISCOVERY_RESULTS) { if ($task['review_mode'] == DISCOVERY_RESULTS) {
$agents_review = db_get_all_rows_filter( $agents_review = db_get_all_rows_filter(
'tdiscovery_tmp_agents', 'tdiscovery_tmp_agents',
@ -1476,11 +1484,11 @@ class DiscoveryTaskList extends HTML
$countSummary = 1; $countSummary = 1;
if (is_array($task['stats']) === true && count(array_filter(array_keys($task['stats']), 'is_numeric')) === count($task['stats'])) { if (is_array($task['stats']) === true && count(array_filter(array_keys($task['stats']), 'is_numeric')) === count($task['stats'])) {
foreach ($task['stats'] as $key => $summary) { foreach ($task['stats'] as $key => $summary) {
$table->data[$i][0] = '<b>'.__('Summary').' '.$countSummary.'</b>';
$table->data[$i][1] = '';
$countSummary++;
$i++;
if (is_array($summary) === true) { if (is_array($summary) === true) {
$table->data[$i][0] = '<b>'.__('Summary').' '.$countSummary.'</b>';
$table->data[$i][1] = '';
$countSummary++;
$i++;
if (empty($summary['summary']) === true && empty($summary['info']) === true) { if (empty($summary['summary']) === true && empty($summary['info']) === true) {
$table->data[$i][0] = json_encode($summary, JSON_PRETTY_PRINT); $table->data[$i][0] = json_encode($summary, JSON_PRETTY_PRINT);
$table->data[$i][1] = ''; $table->data[$i][1] = '';
@ -1517,8 +1525,12 @@ class DiscoveryTaskList extends HTML
$i++; $i++;
} }
} else { } else {
$table->data[$i][0] = $summary; $tableErrors->data[$i][0] = '<b>'.__('Error %s', $countErrors).'</b>';
$table->data[$i][1] = ''; $tableErrors->data[$i][1] = '';
$i++;
$tableErrors->data[$i][0] = $summary;
$tableErrors->data[$i][1] = '';
$countErrors++;
$i++; $i++;
} }
} }
@ -1560,12 +1572,26 @@ class DiscoveryTaskList extends HTML
$table->data[$i++][1] .= '</span>'; $table->data[$i++][1] .= '</span>';
} }
} else { } else {
$table->data[$i][0] = $task['stats']['summary']; $tableErrors->data[$i][0] = '<b>'.__('Error %s', $countErrors).'</b>';
$tableErrors->data[$i][1] = '';
$i++;
$tableErrors->data[$i][0] = $task['stats']['summary'];
$tableErrors->data[$i][1] = '';
$countErrors++;
$i++;
} }
} }
$output = '<div class="subtitle"><span>'.__('Summary').'</span></div>'; $output = '<div class="subtitle"><span>'.__('Summary').'</span></div>';
$output .= html_print_table($table, true).'</div>'; if (is_array($table->data) === true && count($table->data) > 0) {
$output .= html_print_table($table, true);
}
if (is_array($tableErrors->data) === true && count($tableErrors->data) > 0) {
$output .= html_print_table($tableErrors, true);
}
$output .= '</div>';
} }
return $output; return $output;

View File

@ -251,7 +251,7 @@ if ($change_custom_fields_macros_report === true) {
} }
if ($get_agents === true) { if ($get_agents === true) {
$agents_id = str_replace('&quot;', '', $agents_id); $agents_id = str_replace('&quot;', '"', $agents_id);
try { try {
$agents_id = json_decode($agents_id, true); $agents_id = json_decode($agents_id, true);

View File

@ -549,8 +549,12 @@ class Heatmap
global $config; global $config;
$filter_group = ''; $filter_group = '';
if (empty($this->filter) === false && current($this->filter) != -1) { if (empty($this->filter) === false && current($this->filter) != -1
&& implode(',', $this->filter) !== ''
) {
$filter_group = 'AND am.id_module_group IN ('.implode(',', $this->filter).')'; $filter_group = 'AND am.id_module_group IN ('.implode(',', $this->filter).')';
} else {
return false;
} }
$filter_name = ''; $filter_name = '';

View File

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

View File

@ -3643,7 +3643,7 @@ function select_modules_for_agent_group(
if (!$selection && $agents != null) { if (!$selection && $agents != null) {
$number_agents = count($id_agents); $number_agents = count($id_agents);
$selection_filter = "HAVING COUNT(id_agente_modulo) = $number_agents"; $selection_filter = "GROUP BY nombre HAVING COUNT(id_agente_modulo) = $number_agents";
} }
if (tags_has_user_acl_tags(false)) { if (tags_has_user_acl_tags(false)) {
@ -3664,7 +3664,7 @@ function select_modules_for_agent_group(
$sql = "SELECT * FROM $sql = "SELECT * FROM
( (
SELECT DISTINCT(tagente_modulo.id_agente_modulo), tagente_modulo.nombre SELECT (tagente_modulo.id_agente_modulo), tagente_modulo.nombre, tagente.alias
FROM tagente_modulo FROM tagente_modulo
$sql_tags_inner $sql_tags_inner
INNER JOIN tagente INNER JOIN tagente
@ -3679,7 +3679,7 @@ function select_modules_for_agent_group(
$filter_not_string_modules $filter_not_string_modules
$sql_conditions_tags $sql_conditions_tags
) x ) x
GROUP BY nombre
$selection_filter"; $selection_filter";
$modules = db_get_all_rows_sql($sql); $modules = db_get_all_rows_sql($sql);
@ -4976,13 +4976,38 @@ function get_resume_agent_concat($id_agente, $all_groups, $agent)
} }
/**
* agent belongs to the clusters.
*
* @param integer $idAgent
*
* @return array Names clusters.
*/
function agents_get_agent_belongs_cluster(int $idAgent): array
{
$sql = sprintf(
'SELECT tcluster.name
FROM tcluster
INNER JOIN tcluster_agent
ON tcluster.id = tcluster_agent.id_cluster
WHERE tcluster_agent.id_agent = %d',
$idAgent
);
$result = db_get_all_rows_sql($sql);
if ($result === false) {
$result = [];
}
return $result;
}
/** /**
* Return an array with a list of status agents * Return an array with a list of status agents
* *
* @return array. * @return array.
*/ */
function agents_status_list() function agents_status_list()
{ {
$status_list = []; $status_list = [];

View File

@ -5039,7 +5039,11 @@ function events_page_general($event)
$data[1] = $user_owner; $data[1] = $user_owner;
} }
$table_general->cellclass[3][1] = 'general_owner'; if (is_metaconsole() === true && $event['server_name'] !== '') {
$table_general->cellclass[4][1] = 'general_owner';
} else {
$table_general->cellclass[3][1] = 'general_owner';
}
$table_general->data[] = $data; $table_general->data[] = $data;
@ -5099,38 +5103,21 @@ function events_page_general($event)
$table_general->cellclass[count($table_general->data)][1] = 'general_acknowleded'; $table_general->cellclass[count($table_general->data)][1] = 'general_acknowleded';
$data = []; $data = [];
if (empty($event['server_id']) === false && (int) $event['server_id'] > 0
&& is_metaconsole() === true
) {
$node_connect = new Node($event['server_id']);
$node_connect->connect();
}
$data[0] = __('Acknowledged by'); $data[0] = __('Acknowledged by');
$data[1] = events_page_general_acknowledged($event['id_evento']);
if ($event['estado'] == 1 || $event['estado'] == 2) { if (empty($event['server_id']) === false && (int) $event['server_id'] > 0
if (empty($event['id_usuario']) === true) { && is_metaconsole() === true
$user_ack = __('Autovalidated'); ) {
} else { $node_connect->disconnect();
$user_ack = db_get_value(
'fullname',
'tusuario',
'id_user',
$event['id_usuario']
);
if (empty($user_ack) === true) {
$user_ack = $event['id_usuario'];
}
}
$data[1] = $user_ack.'&nbsp;(&nbsp;';
if ($event['ack_utimestamp_raw'] !== false
&& $event['ack_utimestamp_raw'] !== 'false'
&& empty($event['ack_utimestamp_raw']) === false
) {
$data[1] .= date(
$config['date_format'],
$event['ack_utimestamp_raw']
);
}
$data[1] .= '&nbsp;)&nbsp;';
} else {
$data[1] = '<i>'.__('N/A').'</i>';
} }
$table_general->cellclass[7][1] = 'general_status'; $table_general->cellclass[7][1] = 'general_status';
@ -5237,15 +5224,19 @@ function events_page_general_acknowledged($event_id)
$Acknowledged = ''; $Acknowledged = '';
$event = db_get_row('tevento', 'id_evento', $event_id); $event = db_get_row('tevento', 'id_evento', $event_id);
if ($event !== false && ($event['estado'] == 1 || $event['estado'] == 2)) { if ($event !== false && ($event['estado'] == 1 || $event['estado'] == 2)) {
$user_ack = db_get_value( if (empty($event['id_usuario']) === true) {
'fullname', $user_ack = __('Autovalidated');
'tusuario', } else {
'id_user', $user_ack = db_get_value(
$config['id_user'] 'fullname',
); 'tusuario',
'id_user',
$config['id_user']
);
if (empty($user_ack) === true) { if (empty($user_ack) === true) {
$user_ack = $config['id_user']; $user_ack = $config['id_user'];
}
} }
$Acknowledged = $user_ack.'&nbsp;(&nbsp;'; $Acknowledged = $user_ack.'&nbsp;(&nbsp;';
@ -5260,7 +5251,7 @@ function events_page_general_acknowledged($event_id)
$Acknowledged .= '&nbsp;)&nbsp;'; $Acknowledged .= '&nbsp;)&nbsp;';
} else { } else {
$Acknowledged = 'N/A'; $Acknowledged = '<i>'.__('N/A').'</i>';
} }
return $Acknowledged; return $Acknowledged;

View File

@ -581,6 +581,9 @@ function io_output_password($password, $wrappedBy='')
$output = ($plaintext === ENTERPRISE_NOT_HOOK) ? $password : $plaintext; $output = ($plaintext === ENTERPRISE_NOT_HOOK) ? $password : $plaintext;
// If password already decrypt return same password.
$output = (empty($plaintext) === true) ? $password : $plaintext;
return sprintf( return sprintf(
'%s%s%s', '%s%s%s',
$wrappedBy, $wrappedBy,

View File

@ -3801,7 +3801,7 @@ function get_modules_agents(
$return = array_reduce( $return = array_reduce(
$modules[$tserver], $modules[$tserver],
function ($carry, $item) use ($tserver, $nodes) { function ($carry, $item) use ($tserver, $nodes, $selection) {
$t = []; $t = [];
foreach ($item as $k => $v) { foreach ($item as $k => $v) {
$t[$k] = $v; $t[$k] = $v;
@ -3809,9 +3809,15 @@ function get_modules_agents(
$t['id_node'] = $tserver; $t['id_node'] = $tserver;
if ($nodes[$tserver] !== null) { if ($nodes[$tserver] !== null) {
$t['nombre'] = io_safe_output( if (isset($t['alias']) === true && (bool) $selection === true) {
$nodes[$tserver]->server_name().' &raquo; '.$t['nombre'] $t['nombre'] = io_safe_output(
); $nodes[$tserver]->server_name().' &raquo; '.$t['alias'].' &raquo; '.$t['nombre']
);
} else {
$t['nombre'] = io_safe_output(
$nodes[$tserver]->server_name().' &raquo; '.$t['nombre']
);
}
} }
$carry[] = $t; $carry[] = $t;
@ -3845,9 +3851,23 @@ function get_modules_agents(
$selection, $selection,
false, false,
$useName, $useName,
false, true,
$notStringModules $notStringModules
); );
$modules = array_reduce(
$modules,
function ($carry, $item) use ($id_agents, $selection) {
if (count($id_agents) > 1 && (bool) $selection === true) {
$carry[$item['id_agente_modulo']] = $item['alias'].' &raquo; '.$item['nombre'];
} else {
$carry[$item['id_agente_modulo']] = $item['nombre'];
}
return $carry;
},
[]
);
} }
return $modules; return $modules;

View File

@ -804,6 +804,13 @@ function reporting_make_reporting_data(
); );
break; break;
case 'service_level':
$report['contents'][] = reporting_service_level_detail(
$report,
$content
);
break;
case 'end_of_life': case 'end_of_life':
$report['contents'][] = reporting_end_of_life( $report['contents'][] = reporting_end_of_life(
$report, $report,
@ -3715,6 +3722,60 @@ function reporting_agent_module_status($report, $content)
} }
/**
* Service level detail
*
* @param array $report Info Report.
* @param array $content Info content.
*
* @return array
*/
function reporting_service_level_detail($report, $content)
{
global $config;
$return['type'] = 'service_level';
$module_data = [];
$interval_range = [];
$service_level_data = [];
$current_timestamp = time();
$return['title'] = io_safe_output($content['name']);
$return['landscape'] = $content['landscape'];
$return['pagebreak'] = $content['pagebreak'];
$return['description'] = io_safe_output($content['description']);
$return['label'] = (isset($content['style']['label'])) ? $content['style']['label'] : '';
$es = json_decode($content['external_source'], true);
$return['date'] = [];
$return['date']['date'] = false;
$return['date']['period'] = $es['period_time_service_level'];
$return['show_agents'] = $es['show_agents'];
$modules = json_decode(base64_decode($es['module']), true);
$agents = json_decode(base64_decode($es['id_agents']), true);
$interval_range['start'] = ($current_timestamp - $es['period_time_service_level']);
$interval_range['end'] = $current_timestamp;
foreach ($modules as $module) {
$service_level_data = service_level_module_data($interval_range['start'], $interval_range['end'], $module);
$module_data[$module] = [];
$module_data[$module]['mtrs'] = ($service_level_data['mtrs'] !== false) ? human_milliseconds_to_string(($service_level_data['mtrs'] * 100), 'short') : '-';
$module_data[$module]['mtbf'] = ($service_level_data['mtbf'] !== false) ? human_milliseconds_to_string(($service_level_data['mtbf'] * 100), 'short') : '-';
$module_data[$module]['availability'] = ($service_level_data['availability'] !== false) ? $service_level_data['availability'] : '100';
$module_data[$module]['warning_events'] = ($service_level_data['warning_events'] !== false) ? $service_level_data['warning_events'] : '0';
$module_data[$module]['critical_events'] = ($service_level_data['critical_events'] !== false) ? $service_level_data['critical_events'] : '0';
$module_data[$module]['last_status_change'] = ($service_level_data['last_status_change'] !== false) ? $service_level_data['last_status_change'] : '';
$module_data[$module]['module_name'] = ($service_level_data['module_name'] !== false) ? $service_level_data['module_name'] : '';
$module_data[$module]['agent_alias'] = ($service_level_data['agent_alias'] !== false) ? $service_level_data['agent_alias'] : '';
}
$return['data'] = $module_data;
return reporting_check_structure_content($return);
}
/** /**
* OS Version End of Life * OS Version End of Life
* *

View File

@ -260,7 +260,6 @@ function reporting_html_print_report($report, $mini=false, $report_info=1, $cust
} }
$table->colspan['description_row']['description'] = 3; $table->colspan['description_row']['description'] = 3;
switch ($item['type']) { switch ($item['type']) {
case 'availability': case 'availability':
default: default:
@ -403,6 +402,10 @@ function reporting_html_print_report($report, $mini=false, $report_info=1, $cust
reporting_html_agent_module_status($table, $item); reporting_html_agent_module_status($table, $item);
break; break;
case 'service_level':
reporting_html_service_level($table, $item);
break;
case 'end_of_life': case 'end_of_life':
reporting_html_end_of_life($table, $item); reporting_html_end_of_life($table, $item);
break; break;
@ -3084,6 +3087,85 @@ function reporting_html_agent_module_status($table, $item, $pdf=0)
} }
function reporting_html_service_level($table, $item, $pdf=0)
{
global $config;
$return_pdf = '';
if (empty($item['data']) === true) {
if ($pdf !== 0) {
$return_pdf .= __('No items');
} else {
$table->colspan['group_report']['cell'] = 3;
$table->cellstyle['group_report']['cell'] = 'text-align: center;';
$table->data['group_report']['cell'] = __('No items');
}
} else {
$table_info = new stdClass();
$table_info->width = '99%';
if ($item['show_agents'] === '1') {
$show_agents = 'on';
} else {
$show_agents = 'off';
}
if ($show_agents === 'on') {
$table_info->head[0] = __('Agent / Module');
} else {
$table_info->head[0] = __('Module');
}
$table_info->head[1] = __('% Av.');
$table_info->head[2] = __('MTBF');
$table_info->head[3] = __('MTRS');
$table_info->head[4] = __('Crit. Events').ui_print_help_tip(__('Counted only critical events generated automatic by the module'), true);
$table_info->head[5] = __('Warn. Events').ui_print_help_tip(__('Counted only warning events generated automatic by the module'), true);
$table_info->head[6] = __('Last change');
$table_info->data = [];
$table_info->cellstyle = [];
$row = 0;
foreach ($item['data'] as $agentmodule_id => $module_data) {
if ($show_agents === 'on') {
$table_info->data[$row][0] = $module_data['agent_alias'].' / '.$module_data['module_name'];
$table_info->cellstyle[$row][0] = 'text-align:left; padding-left: 30px;';
} else {
$table_info->data[$row][0] = $module_data['module_name'];
$table_info->cellstyle[$row][0] = 'text-align:left; padding-left: 30px;';
}
$table_info->data[$row][1] = $module_data['availability'].'%';
$table_info->data[$row][2] = $module_data['mtbf'];
$table_info->data[$row][3] = $module_data['mtrs'];
$table_info->data[$row][4] = $module_data['critical_events'];
$table_info->data[$row][5] = $module_data['warning_events'];
if ($module_data['last_status_change'] !== '') {
$table_info->data[$row][6] = date(TIME_FORMAT, $module_data['last_status_change']);
}
// $table_info->data[$row][6] = date(TIME_FORMAT, $module_data['last_status_change']);
$row++;
}
if ($pdf !== 0) {
$table_info->title = $item['title'];
$table_info->titleclass = 'title_table_pdf';
$table_info->titlestyle = 'text-align:left;';
$return_pdf .= html_print_table($table_info, true);
} else {
$table->colspan['data']['cell'] = 3;
$table->cellstyle['data']['cell'] = 'text-align: center;';
$table->data['data']['cell'] = html_print_table($table_info, true);
}
}
if ($pdf !== 0) {
return $return_pdf;
}
}
/** /**
* Html report end of life. * Html report end of life.
* *

View File

@ -777,6 +777,10 @@ function reports_get_report_types($template=false, $not_editor=false)
'optgroup' => __('Modules'), 'optgroup' => __('Modules'),
'name' => __('Last value'), 'name' => __('Last value'),
]; ];
$types['service_level'] = [
'optgroup' => __('Modules'),
'name' => __('Service Level Detailed'),
];
$types['general'] = [ $types['general'] = [
'optgroup' => __('Grouped'), 'optgroup' => __('Grouped'),

View File

@ -1549,14 +1549,41 @@ $(document).ajaxSend(function(event, jqXHR, ajaxOptions) {
title: "Minimize" title: "Minimize"
}).insertBefore(closeButton); }).insertBefore(closeButton);
// Add the minimize icon to the minimize button
$("<span>", {
class: "ui-button-icon ui-icon",
style:
"background-color: rgb(51, 51, 51); -webkit-mask: url('images/arrow-down-white.png') no-repeat / contain !important;"
}).appendTo(minimizeButton);
$("<span>", {
class: "ui-button-icon-space"
})
.html(" ")
.appendTo(minimizeButton);
// Add the disengage button before the minimize button // Add the disengage button before the minimize button
var disengageButton = $("<button>", { var disengageButton = $("<button>", {
class: class:
"ui-corner-all ui-widget ui-button-icon-only ui-dialog-titlebar-disengage disengage-buttom-image", "ui-corner-all ui-widget ui-button-icon-only ui-dialog-titlebar-disengage disengage-buttom-image",
type: "button", type: "button",
title: "Disengage" title: "Disengage",
style: "float: right; position:relative;"
}).insertBefore(minimizeButton); }).insertBefore(minimizeButton);
// Add the disengage icon to the disengage button
$("<span>", {
class: "ui-button-icon ui-icon",
style:
"background-color: rgb(51, 51, 51); -webkit-mask: url('images/dashboard.menu.png') no-repeat center / contain !important;"
}).appendTo(disengageButton);
$("<span>", {
class: "ui-button-icon-space"
})
.html(" ")
.appendTo(disengageButton);
minimizeButton.click(function(e) { minimizeButton.click(function(e) {
if ($("#minimize_arrow_event_sound").hasClass("arrow_menu_up")) { if ($("#minimize_arrow_event_sound").hasClass("arrow_menu_up")) {
$("#minimize_arrow_event_sound").removeClass("arrow_menu_up"); $("#minimize_arrow_event_sound").removeClass("arrow_menu_up");

View File

@ -213,6 +213,10 @@ class Cluster extends Entity
public function getCounters() :array public function getCounters() :array
{ {
$id_agent_modules = $this->getIdsModulesInvolved(); $id_agent_modules = $this->getIdsModulesInvolved();
if (empty($id_agent_modules) === true) {
return [];
}
$sql = sprintf( $sql = sprintf(
'SELECT SUM( IF(estado = 1, 1, 0) ) AS critical, 'SELECT SUM( IF(estado = 1, 1, 0) ) AS critical,
SUM( IF(estado = 2, 1, 0) ) AS warning, SUM( IF(estado = 2, 1, 0) ) AS warning,

View File

@ -320,6 +320,10 @@ class HeatmapWidget extends Widget
$module_groups[$module_group['id_mg']] = $module_group['name']; $module_groups[$module_group['id_mg']] = $module_group['name'];
} }
if (empty($values['module_groups'][0]) === true) {
$values['module_groups'][0] = 0;
}
$inputs[] = [ $inputs[] = [
'label' => __('Module group'), 'label' => __('Module group'),
'style' => ($values['type'] === '2') ? '' : 'display:none', 'style' => ($values['type'] === '2') ? '' : 'display:none',
@ -332,7 +336,7 @@ class HeatmapWidget extends Widget
'return' => true, 'return' => true,
'multiple' => true, 'multiple' => true,
'nothing' => __('Not assigned'), 'nothing' => __('Not assigned'),
'nothing_value' => 0, 'nothing_value' => '0',
], ],
]; ];

View File

@ -117,6 +117,8 @@ class NewsBoard extends Element
$output .= '</div>'; $output .= '</div>';
return $output; return $output;
} else {
return '';
} }
} }

View File

@ -148,7 +148,7 @@ h1 {
cursor: pointer; cursor: pointer;
} }
#modal-add-widget { #modal-add-widget {
min-height: 566px !important; min-height: 625px !important;
} }
#modal-add-widget .container-list-widgets { #modal-add-widget .container-list-widgets {
display: flex; display: flex;

View File

@ -48,8 +48,9 @@
.ui-dialog .ui-dialog-titlebar-minimize { .ui-dialog .ui-dialog-titlebar-minimize {
position: relative; position: relative;
height: 20px; height: 20px;
width: 20px; bottom: 30%;
margin-right: 1px; top: 0px;
background-color: #fff !important;
} }
.ui-dialog .ui-dialog-titlebar-minimize:hover { .ui-dialog .ui-dialog-titlebar-minimize:hover {
@ -57,10 +58,15 @@
} }
.ui-dialog .ui-dialog-titlebar-disengage { .ui-dialog .ui-dialog-titlebar-disengage {
position: relative; position: absolute !important;
height: 20px; right: 50px;
width: 20px; top: -3px;
margin-right: 5px; width: 40px;
margin: 0px 0 0 0;
padding: 1px;
height: 40px;
bottom: 30%;
background-color: #fff !important;
} }
.ui-dialog .ui-dialog-titlebar-disengage:hover { .ui-dialog .ui-dialog-titlebar-disengage:hover {

View File

@ -12882,6 +12882,10 @@ tr.shown td.details-control {
color: black; color: black;
} }
.tags_selected_container > span.select2 {
background-color: white !important;
}
.span_as_label { .span_as_label {
font-size: 13px; font-size: 13px;
line-height: 16px; line-height: 16px;

View File

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

View File

@ -675,7 +675,9 @@ $params['return'] = true;
$params['show_helptip'] = true; $params['show_helptip'] = true;
$params['input_name'] = 'agent'; $params['input_name'] = 'agent';
$params['value'] = $inventory_agent; $params['value'] = $inventory_agent;
$params['javascript_is_function_select'] = true; $params['selectbox_id'] = 'module_inventory_general_view';
// $params['javascript_is_function_select'] = true;
// $params['javascript_function_action_after_select'] = 'this.form.submit';
$params['use_hidden_input_idagent'] = true; $params['use_hidden_input_idagent'] = true;
$params['print_hidden_input_idagent'] = true; $params['print_hidden_input_idagent'] = true;
$params['hidden_input_idagent_id'] = 'hidden-autocomplete_id_agent'; $params['hidden_input_idagent_id'] = 'hidden-autocomplete_id_agent';

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.774 %define version 7.0NG.774
%define release 231213 %define release 231214
# 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.774 %define version 7.0NG.774
%define release 231213 %define release 231214
# 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.774 %define version 7.0NG.774
%define release 231213 %define release 231214
%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

@ -151,7 +151,11 @@ $agentCountModules = html_print_div(
true true
); );
$alive_animation = agents_get_starmap(0, 180, 30, $module_involved_ids); $alive_animation = '';
if (empty($module_involved_ids) === false) {
$alive_animation = agents_get_starmap(0, 180, 30, $module_involved_ids);
}
$output = '<div id="agent_details_first_row" class="w100p cluster-agent-data">'; $output = '<div id="agent_details_first_row" class="w100p cluster-agent-data">';
$output .= '<div class="flex">'; $output .= '<div class="flex">';

View File

@ -1,5 +1,5 @@
package: pandorafms-server package: pandorafms-server
Version: 7.0NG.774-231213 Version: 7.0NG.774-231214
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.774-231213" pandora_version="7.0NG.774-231214"
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.774"; my $pandora_version = "7.0NG.774";
my $pandora_build = "231213"; my $pandora_build = "231214";
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.774"; my $pandora_version = "7.0NG.774";
my $pandora_build = "231213"; my $pandora_build = "231214";
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.774 %define version 7.0NG.774
%define release 231213 %define release 231214
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.774 %define version 7.0NG.774
%define release 231213 %define release 231214
Summary: Pandora FMS Server Summary: Pandora FMS Server
Name: %{name} Name: %{name}

View File

@ -9,7 +9,7 @@
# ********************************************************************** # **********************************************************************
PI_VERSION="7.0NG.774" PI_VERSION="7.0NG.774"
PI_BUILD="231213" PI_BUILD="231214"
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.774 Build 231213"; my $version = "7.0NG.774 Build 231214";
# 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.774 Build 231213"; my $version = "7.0NG.774 Build 231214";
# save program name for logging # save program name for logging
my $progname = basename($0); my $progname = basename($0);