Merge remote-tracking branch 'origin/develop' into ent-4752-Herramientas-de-diagnostico

This commit is contained in:
Daniel Barbero Martin 2019-10-23 19:51:49 +02:00
commit de22fb70e3
69 changed files with 922 additions and 343 deletions

View File

@ -1,5 +1,5 @@
package: pandorafms-agent-unix package: pandorafms-agent-unix
Version: 7.0NG.739-191011 Version: 7.0NG.739-191023
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.739-191011" pandora_version="7.0NG.739-191023"
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

@ -42,7 +42,7 @@ my $Sem = undef;
my $ThreadSem = undef; my $ThreadSem = undef;
use constant AGENT_VERSION => '7.0NG.739'; use constant AGENT_VERSION => '7.0NG.739';
use constant AGENT_BUILD => '191011'; use constant AGENT_BUILD => '191023';
# 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

@ -3,7 +3,7 @@
# #
%define name pandorafms_agent_unix %define name pandorafms_agent_unix
%define version 7.0NG.739 %define version 7.0NG.739
%define release 191011 %define release 191023
Summary: Pandora FMS Linux agent, PERL version Summary: Pandora FMS Linux agent, PERL version
Name: %{name} Name: %{name}

View File

@ -3,7 +3,7 @@
# #
%define name pandorafms_agent_unix %define name pandorafms_agent_unix
%define version 7.0NG.739 %define version 7.0NG.739
%define release 191011 %define release 191023
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.739" PI_VERSION="7.0NG.739"
PI_BUILD="191011" PI_BUILD="191023"
OS_NAME=`uname -s` OS_NAME=`uname -s`
FORCE=0 FORCE=0

View File

@ -186,7 +186,7 @@ UpgradeApplicationID
{} {}
Version Version
{191011} {191023}
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.739(Build 191011)") #define PANDORA_VERSION ("7.0NG.739(Build 191023)")
string pandora_path; string pandora_path;
string pandora_dir; string pandora_dir;

View File

@ -11,7 +11,7 @@ BEGIN
VALUE "LegalCopyright", "Artica ST" VALUE "LegalCopyright", "Artica ST"
VALUE "OriginalFilename", "PandoraAgent.exe" VALUE "OriginalFilename", "PandoraAgent.exe"
VALUE "ProductName", "Pandora FMS Windows Agent" VALUE "ProductName", "Pandora FMS Windows Agent"
VALUE "ProductVersion", "(7.0NG.739(Build 191011))" VALUE "ProductVersion", "(7.0NG.739(Build 191023))"
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.739-191011 Version: 7.0NG.739-191023
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.739-191011" pandora_version="7.0NG.739-191023"
package_pear=0 package_pear=0
package_pandora=1 package_pandora=1

View File

@ -765,7 +765,7 @@ $table_adv_agent_icon .= html_print_select(
).'</div>'; ).'</div>';
if ($config['activate_gis']) { if ($config['activate_gis']) {
$table_adv_gis = '<div class="label_select_simple label_simple_one_item"><p class="input_label input_label_simple">'.__('Ignore new GIS data:').'</p>'; $table_adv_gis = '<div class="label_select_simple label_simple_one_item"><p class="input_label input_label_simple">'.__('Update new GIS data:').'</p>';
if ($new_agent) { if ($new_agent) {
$update_gis_data = true; $update_gis_data = true;
} }

View File

@ -842,7 +842,9 @@ foreach ($modules as $module) {
$module['str_warning'], $module['str_warning'],
$module['max_critical'], $module['max_critical'],
$module['min_critical'], $module['min_critical'],
$module['str_critical'] $module['str_critical'],
$module['warning_inverse'],
$module['critical_inverse']
); );
} else { } else {
$data[7] = ''; $data[7] = '';

View File

@ -59,8 +59,10 @@ if ($update_agents) {
$values['id_grupo'] = get_parameter('group'); $values['id_grupo'] = get_parameter('group');
} }
if (get_parameter('interval', 0) != 0) { if (!(get_parameter('interval_select') == -1 && empty(get_parameter('interval_text')))) {
$values['intervalo'] = get_parameter('interval'); if (get_parameter('interval', 0) != 0) {
$values['intervalo'] = get_parameter('interval');
}
} }
if (get_parameter('id_os', '') != -1) { if (get_parameter('id_os', '') != -1) {
@ -523,7 +525,7 @@ $table->data[1][1] = html_print_select_groups(false, 'AR', false, 'group', $grou
$table->data[2][0] = __('Interval'); $table->data[2][0] = __('Interval');
$table->data[2][1] = html_print_extended_select_for_time('interval', 0, '', __('No change'), '0', 10, true, 'width: 150px'); $table->data[2][1] = html_print_extended_select_for_time('interval', 0, '', __('No change'), '0', 10, true, 'width: 150px', false);
$table->data[3][0] = __('OS'); $table->data[3][0] = __('OS');
$table->data[3][1] = html_print_select_from_sql( $table->data[3][1] = html_print_select_from_sql(

View File

@ -16,10 +16,10 @@ global $config;
// Check user credentials // Check user credentials
check_login(); check_login();
if (! check_acl($config['id_user'], 0, 'RR')) { if (! check_acl($config['id_user'], 0, 'RR') || enterprise_installed() === false) {
db_pandora_audit( db_pandora_audit(
'ACL Violation', 'ACL Violation',
'Trying to access Inventory Module Management' 'Trying to access Graph container'
); );
include 'general/noaccess.php'; include 'general/noaccess.php';
return; return;

View File

@ -71,10 +71,12 @@ switch ($activeTab) {
break; break;
} }
$buttons['graph_container'] = [ if ($enterpriseEnable) {
'active' => false, $buttons['graph_container'] = [
'text' => '<a href="index.php?sec=reporting&sec2=godmode/reporting/graph_container">'.html_print_image('images/graph-container.png', true, ['title' => __('Graphs containers')]).'</a>', 'active' => false,
]; 'text' => '<a href="index.php?sec=reporting&sec2=godmode/reporting/graph_container">'.html_print_image('images/graph-container.png', true, ['title' => __('Graphs containers')]).'</a>',
];
}
$delete_graph = (bool) get_parameter('delete_graph'); $delete_graph = (bool) get_parameter('delete_graph');
$view_graph = (bool) get_parameter('view_graph'); $view_graph = (bool) get_parameter('view_graph');

View File

@ -240,7 +240,7 @@ switch ($action) {
$hide_notinit_agents = $style['hide_notinit_agents']; $hide_notinit_agents = $style['hide_notinit_agents'];
$dyn_height = $style['dyn_height']; $dyn_height = $style['dyn_height'];
$type = $item['type']; $type = $item['type'];
$name = $item['name']; $name = $style['name_label'];
switch ($type) { switch ($type) {
case 'event_report_log': case 'event_report_log':

View File

@ -1,18 +1,34 @@
<?php <?php
// Pandora FMS - http://pandorafms.com /**
// ================================================== * Report item list.
// Copyright (c) 2005-2010 Artica Soluciones Tecnologicas *
// Please see http://pandorafms.org for full contribution list * @category Reporting
// This program is free software; you can redistribute it and/or * @package Pandora FMS
// modify it under the terms of the GNU General Public License * @subpackage Community
// as published by the Free Software Foundation for version 2. * @version 1.0.0
// This program is distributed in the hope that it will be useful, * @license See below
// but WITHOUT ANY WARRANTY; without even the implied warranty of *
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * ______ ___ _______ _______ ________
// GNU General Public License for more details. * | __ \.-----.--.--.--| |.-----.----.-----. | ___| | | __|
* | __/| _ | | _ || _ | _| _ | | ___| |__ |
* |___| |___._|__|__|_____||_____|__| |___._| |___| |__|_|__|_______|
*
* ============================================================================
* Copyright (c) 2005-2019 Artica Soluciones Tecnologicas
* Please see http://pandorafms.org for full contribution list
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation for version 2.
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* ============================================================================
*/
global $config; global $config;
// Login check // Login check.
check_login(); check_login();
if (! check_acl($config['id_user'], 0, 'RW')) { if (! check_acl($config['id_user'], 0, 'RW')) {
@ -39,12 +55,16 @@ switch ($config['dbtype']) {
'type' 'type'
); );
break; break;
default:
// Default.
break;
} }
$report_w = check_acl($config['id_user'], 0, 'RW'); $report_w = check_acl($config['id_user'], 0, 'RW');
$report_m = check_acl($config['id_user'], 0, 'RM'); $report_m = check_acl($config['id_user'], 0, 'RM');
if ($config['metaconsole'] == 1 and defined('METACONSOLE')) { if (is_metaconsole()) {
$agents = []; $agents = [];
$agents = metaconsole_get_report_agents($idReport); $agents = metaconsole_get_report_agents($idReport);
$modules = []; $modules = [];
@ -52,7 +72,7 @@ if ($config['metaconsole'] == 1 and defined('METACONSOLE')) {
$types = []; $types = [];
$types = metaconsole_get_report_types($idReport); $types = metaconsole_get_report_types($idReport);
} else { } else {
// FORM FILTER // FORM FILTER.
switch ($config['dbtype']) { switch ($config['dbtype']) {
case 'mysql': case 'mysql':
case 'postgresql': case 'postgresql':
@ -87,7 +107,10 @@ if ($config['metaconsole'] == 1 and defined('METACONSOLE')) {
ON (t4.id_agent = t5.id_agente OR t4.id_agente = t5.id_agente) ON (t4.id_agent = t5.id_agente OR t4.id_agente = t5.id_agente)
WHERE t4.id_report = '.$idReport WHERE t4.id_report = '.$idReport
); );
break;
default:
// Default.
break; break;
} }
@ -124,6 +147,10 @@ if ($config['metaconsole'] == 1 and defined('METACONSOLE')) {
WHERE t1.id_report = '.$idReport WHERE t1.id_report = '.$idReport
); );
break; break;
default:
// Default.
break;
} }
if ($rows === false) { if ($rows === false) {
@ -135,8 +162,8 @@ if ($config['metaconsole'] == 1 and defined('METACONSOLE')) {
$modules[$row['id_agent_module']] = $row['nombre']; $modules[$row['id_agent_module']] = $row['nombre'];
} }
// Filter report items created from metaconsole in normal console list and the opposite // Filter report items created from metaconsole in normal console list and the opposite.
if (defined('METACONSOLE') and $config['metaconsole'] == 1) { if (is_metaconsole()) {
$where_types = ' AND ((server_name IS NOT NULL AND length(server_name) != 0) OR '.$type_escaped.' IN (\'general\',\'SLA\',\'exception\',\'top_n\'))'; $where_types = ' AND ((server_name IS NOT NULL AND length(server_name) != 0) OR '.$type_escaped.' IN (\'general\',\'SLA\',\'exception\',\'top_n\'))';
} else { } else {
$where_types = ' AND ((server_name IS NULL OR length(server_name) = 0) OR '.$type_escaped.' IN (\'general\',\'SLA\',\'exception\',\'top_n\'))'; $where_types = ' AND ((server_name IS NULL OR length(server_name) = 0) OR '.$type_escaped.' IN (\'general\',\'SLA\',\'exception\',\'top_n\'))';
@ -184,7 +211,6 @@ if (!defined('METACONSOLE')) {
$table->data[0][1] .= html_print_select($modules, 'module_filter', $moduleFilter, '', __('All'), 0, true); $table->data[0][1] .= html_print_select($modules, 'module_filter', $moduleFilter, '', __('All'), 0, true);
$table->data[0][2] = __('Type'); $table->data[0][2] = __('Type');
$table->data[0][2] .= html_print_select($types, 'type_filter', $typeFilter, '', __('All'), 0, true); $table->data[0][2] .= html_print_select($types, 'type_filter', $typeFilter, '', __('All'), 0, true);
// $table->data[1][2] = $table->data[1][3] = '';
$form = '<form method="post" action ="index.php?sec=reporting&sec2=godmode/reporting/reporting_builder&tab=list_items&action=filter&id_report='.$idReport.'">'; $form = '<form method="post" action ="index.php?sec=reporting&sec2=godmode/reporting/reporting_builder&tab=list_items&action=filter&id_report='.$idReport.'">';
$form .= html_print_table($table, true); $form .= html_print_table($table, true);
$form .= '<div class="action-buttons" style="width: '.$table->width.'">'; $form .= '<div class="action-buttons" style="width: '.$table->width.'">';
@ -265,13 +291,6 @@ if ($moduleFilter != 0) {
$where .= ' AND id_agent_module = '.$moduleFilter; $where .= ' AND id_agent_module = '.$moduleFilter;
} }
// Filter report items created from metaconsole in normal console list and the opposite
if (defined('METACONSOLE') and $config['metaconsole'] == 1) {
$where .= ' AND ((server_name IS NOT NULL AND length(server_name) != 0) '.'OR '.$type_escaped.' IN (\'general\', \'SLA\', \'exception\', \'availability\', \'availability_graph\', \'top_n\',\'SLA_monthly\',\'SLA_weekly\',\'SLA_hourly\',\'text\'))';
} else {
$where .= ' AND ((server_name IS NULL OR length(server_name) = 0) '.'OR '.$type_escaped.' IN (\'general\', \'SLA\', \'exception\', \'availability\', \'top_n\'))';
}
switch ($config['dbtype']) { switch ($config['dbtype']) {
case 'mysql': case 'mysql':
$items = db_get_all_rows_sql( $items = db_get_all_rows_sql(
@ -306,13 +325,17 @@ switch ($config['dbtype']) {
'AND', 'AND',
false false
); );
// Delete rnum row generated by oracle_recode_query() function // Delete rnum row generated by oracle_recode_query() function.
if ($items !== false) { if ($items !== false) {
for ($i = 0; $i < count($items); $i++) { for ($i = 0; $i < count($items); $i++) {
unset($items[$i]['rnum']); unset($items[$i]['rnum']);
} }
} }
break; break;
default:
// Default.
break;
} }
$countItems = db_get_sql( $countItems = db_get_sql(
@ -421,29 +444,30 @@ foreach ($items as $item) {
$row[1] = get_report_name($item['type']); $row[1] = get_report_name($item['type']);
if ($item['type'] == 'custom_graph') {
$custom_graph_name = db_get_row_sql('select name from tgraph where id_graph = '.$item['id_gs']);
$row[1] = get_report_name($item['type']).' ('.$custom_graph_name['name'].')';
}
$server_name = $item['server_name']; $server_name = $item['server_name'];
if (($config['metaconsole'] == 1) && ($server_name != '') && defined('METACONSOLE')) { if (is_metaconsole()) {
$connection = metaconsole_get_connection($server_name); $connection = metaconsole_get_connection($server_name);
if (metaconsole_load_external_db($connection) != NOERR) { if (metaconsole_load_external_db($connection) != NOERR) {
// ui_print_error_message ("Error connecting to ".$server_name); // ui_print_error_message ("Error connecting to ".$server_name);
} }
} }
if ($item['type'] == 'custom_graph') {
$custom_graph_name = db_get_row_sql('SELECT name FROM tgraph WHERE id_graph = '.$item['id_gs']);
$row[1] = get_report_name($item['type']).' ('.$custom_graph_name['name'].')';
}
if ($item['id_agent'] == 0) { if ($item['id_agent'] == 0) {
$is_inventory_item = $item['type'] == 'inventory' || $item['type'] == 'inventory_changes'; $is_inventory_item = $item['type'] == 'inventory' || $item['type'] == 'inventory_changes';
// Due to SLA or top N or general report items // Due to SLA or top N or general report items.
if (!$is_inventory_item && ($item['id_agent_module'] == '' || $item['id_agent_module'] == 0)) { if (!$is_inventory_item && ($item['id_agent_module'] == '' || $item['id_agent_module'] == 0)) {
$row[2] = ''; $row[2] = '';
$row[3] = ''; $row[3] = '';
} else { } else {
// The inventory items have the agents and modules in json format in the field external_source // The inventory items have the agents and modules in json format in the field external_source.
if ($is_inventory_item) { if ($is_inventory_item) {
$external_source = json_decode($item['external_source'], true); $external_source = json_decode($item['external_source'], true);
$agents = $external_source['id_agents']; $agents = $external_source['id_agents'];
@ -522,7 +546,7 @@ foreach ($items as $item) {
$table->data[] = $row; $table->data[] = $row;
$count++; $count++;
// Restore db connection // Restore db connection.
if (($config['metaconsole'] == 1) && ($server_name != '') && defined('METACONSOLE')) { if (($config['metaconsole'] == 1) && ($server_name != '') && defined('METACONSOLE')) {
metaconsole_restore_db(); metaconsole_restore_db();
} }

View File

@ -3144,17 +3144,19 @@ if ($enterpriseEnable && defined('METACONSOLE')) {
break; break;
} }
ui_print_page_header( if ($action !== 'update' && !is_metaconsole()) {
$textReportName, ui_print_page_header(
'images/op_reporting.png', $textReportName,
false, 'images/op_reporting.png',
$helpers, false,
false, $helpers,
$buttons, false,
false, $buttons,
'', false,
60 '',
); 60
);
}
} }
if ($resultOperationDB !== null) { if ($resultOperationDB !== null) {
@ -3176,6 +3178,26 @@ if ($resultOperationDB !== null) {
__('Successfull action'), __('Successfull action'),
__('Unsuccessful action<br><br>'.$err) __('Unsuccessful action<br><br>'.$err)
); );
if ($action == 'update') {
$buttons[$activeTab]['active'] = false;
$activeTab = 'list_items';
$buttons[$activeTab]['active'] = true;
if (!is_metaconsole()) {
ui_print_page_header(
$textReportName,
'images/op_reporting.png',
false,
$helpers,
false,
$buttons,
false,
'',
60
);
}
}
} }
switch ($activeTab) { switch ($activeTab) {

View File

@ -928,10 +928,10 @@ if (($create != '') || ($view != '')) {
$other['plugin_type'] = $plugin_meta['plugin_type']; $other['plugin_type'] = $plugin_meta['plugin_type'];
$other['macros'] = urlencode($plugin_meta['macros']); $other['macros'] = urlencode($plugin_meta['macros']);
$other['parameters'] = urlencode($plugin_meta['parameters']); $other['parameters'] = urlencode($plugin_meta['parameters']);
$other = implode('%7C', $other); $other = implode('%7E', $other);
$auth_token = json_decode($value['auth_token']); $auth_token = json_decode($value['auth_token']);
$url = $value['server_url'].'include/api.php?op=set&op2=push_plugin'.'&id='.$pluginid.'&other_mode=url_encode_separator_%7C&other='.$other."&apipass=$auth_token->api_password"."&user=$auth_token->console_user&pass=$auth_token->console_password"; $url = $value['server_url'].'include/api.php?op=set&op2=push_plugin'.'&id='.$pluginid.'&other_mode=url_encode_separator_%7E&other='.$other."&apipass=$auth_token->api_password"."&user=$auth_token->console_user&pass=$auth_token->console_password";
$file_path = realpath($plugin_meta['execute']); $file_path = realpath($plugin_meta['execute']);
$post = ''; $post = '';
if (file_exists($file_path)) { if (file_exists($file_path)) {

View File

@ -18,7 +18,7 @@ check_login();
enterprise_hook('open_meta_frame'); enterprise_hook('open_meta_frame');
if (! check_acl($config['id_user'], 0, 'PM')) { if (! check_acl($config['id_user'], 0, 'UM')) {
db_pandora_audit( db_pandora_audit(
'ACL Violation', 'ACL Violation',
'Trying to access Profile Management' 'Trying to access Profile Management'
@ -320,24 +320,29 @@ if ($id_profile || $new_profile) {
$table->data['IM'] = $row; $table->data['IM'] = $row;
$table->data[] = '<hr>'; $table->data[] = '<hr>';
$disable_option = 'javascript: return false;';
if (check_acl($config['id_user'], 0, 'PM') || users_is_admin()) {
$disable_option = '';
}
// Users // Users
$row = []; $row = [];
$row['name'] = __('Manage users'); $row['name'] = __('Manage users');
$row['input'] = html_print_checkbox('user_management', 1, $user_management, true); $row['input'] = html_print_checkbox('user_management', 1, $user_management, true, false, $disable_option);
$table->data['UM'] = $row; $table->data['UM'] = $row;
$table->data[] = '<hr>'; $table->data[] = '<hr>';
// DB // DB
$row = []; $row = [];
$row['name'] = __('Manage database'); $row['name'] = __('Manage database');
$row['input'] = html_print_checkbox('db_management', 1, $db_management, true); $row['input'] = html_print_checkbox('db_management', 1, $db_management, true, false, $disable_option);
$table->data['DM'] = $row; $table->data['DM'] = $row;
$table->data[] = '<hr>'; $table->data[] = '<hr>';
// Pandora // Pandora
$row = []; $row = [];
$row['name'] = __('%s management', get_product_name()); $row['name'] = __('%s management', get_product_name());
$row['input'] = html_print_checkbox('pandora_management', 1, $pandora_management, true); $row['input'] = html_print_checkbox('pandora_management', 1, $pandora_management, true, false, $disable_option);
$table->data['PM'] = $row; $table->data['PM'] = $row;
$table->data[] = '<hr>'; $table->data[] = '<hr>';
@ -359,3 +364,18 @@ if ($id_profile || $new_profile) {
} }
enterprise_hook('close_meta_frame'); enterprise_hook('close_meta_frame');
?>
<script type="text/javascript" language="javascript">
$(document).ready (function () {
var disable_option = '<?php echo $disable_option; ?>';
if (disable_option != '') {
var ids = ['#checkbox-db_management', '#checkbox-user_management', '#checkbox-pandora_management'];
ids.forEach(id => {
$(id).css({'cursor':'not-allowed', 'opacity':'0.5'});
});
}
});
</script>

View File

@ -362,7 +362,10 @@ foreach ($profiles as $profile) {
$data['PM'] = ($profile['pandora_management'] ? $img : ''); $data['PM'] = ($profile['pandora_management'] ? $img : '');
$table->cellclass[]['operations'] = 'action_buttons'; $table->cellclass[]['operations'] = 'action_buttons';
$data['operations'] = '<a href="index.php?sec='.$sec.'&amp;sec2=godmode/users/configure_profile&id='.$profile['id_perfil'].'&pure='.$pure.'">'.html_print_image('images/config.png', true, ['title' => __('Edit')]).'</a>'; $data['operations'] = '<a href="index.php?sec='.$sec.'&amp;sec2=godmode/users/configure_profile&id='.$profile['id_perfil'].'&pure='.$pure.'">'.html_print_image('images/config.png', true, ['title' => __('Edit')]).'</a>';
$data['operations'] .= '<a href="index.php?sec='.$sec.'&sec2=godmode/users/profile_list&delete_profile=1&id='.$profile['id_perfil'].'&pure='.$pure.'" onClick="if (!confirm(\' '.__('Are you sure?').'\')) return false;">'.html_print_image('images/cross.png', true).'</a>'; if (check_acl($config['id_user'], 0, 'PM') || users_is_admin()) {
$data['operations'] .= '<a href="index.php?sec='.$sec.'&sec2=godmode/users/profile_list&delete_profile=1&id='.$profile['id_perfil'].'&pure='.$pure.'" onClick="if (!confirm(\' '.__('Are you sure?').'\')) return false;">'.html_print_image('images/cross.png', true).'</a>';
}
array_push($table->data, $data); array_push($table->data, $data);
} }

View File

@ -420,7 +420,9 @@ else {
$u = get_user_info($key); $u = get_user_info($key);
$g = users_get_groups($key, 'AR', $u['is_admin']); $g = users_get_groups($key, 'AR', $u['is_admin']);
$result = array_intersect($g, $own_groups); $result = array_intersect($g, $own_groups);
if (!$usr['is_admin'] && !empty($result)) {
// Show users without profile too.
if (!$usr['is_admin'] && !empty($result) || (!$usr['is_admin'] && db_get_all_rows_field_filter('tusuario_perfil', 'id_usuario', $usr['id_user']) === false)) {
$info[$key] = $usr; $info[$key] = $usr;
} }

View File

@ -1113,7 +1113,7 @@ if (check_login()) {
} }
if ($module['id_tipo_modulo'] != 25) { if ($module['id_tipo_modulo'] != 25) {
$data[6] = ui_print_module_warn_value($module['max_warning'], $module['min_warning'], $module['str_warning'], $module['max_critical'], $module['min_critical'], $module['str_critical']); $data[6] = ui_print_module_warn_value($module['max_warning'], $module['min_warning'], $module['str_warning'], $module['max_critical'], $module['min_critical'], $module['str_critical'], $module['warning_inverse'], $module['critical_inverse']);
} else { } else {
$data[6] = ''; $data[6] = '';
} }

View File

@ -1,15 +1,32 @@
<?php <?php
// Pandora FMS- http://pandorafms.com /**
// ================================================== * Pandora FMS integration API.
// Copyright (c) 2005-2011 Artica Soluciones Tecnologicas *
// Please see http://pandorafms.org for full contribution list * @category API
// This program is free software; you can redistribute it and/or * @package Pandora FMS
// modify it under the terms of the GNU Lesser General Public License * @subpackage Console
// as published by the Free Software Foundation; version 2 * @version 1.0.0
// This program is distributed in the hope that it will be useful, * @license See below
// but WITHOUT ANY WARRANTY; without even the implied warranty of *
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * ______ ___ _______ _______ ________
// GNU General Public License for more details. * | __ \.-----.--.--.--| |.-----.----.-----. | ___| | | __|
* | __/| _ | | _ || _ | _| _ | | ___| |__ |
* |___| |___._|__|__|_____||_____|__| |___._| |___| |__|_|__|_______|
*
* ============================================================================
* Copyright (c) 2005-2019 Artica Soluciones Tecnologicas
* Please see http://pandorafms.org for full contribution list
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation for version 2.
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* ============================================================================
*/
// Begin.
require_once 'config.php'; require_once 'config.php';
require_once 'functions_api.php'; require_once 'functions_api.php';
@ -18,7 +35,7 @@ global $config;
define('DEBUG', 0); define('DEBUG', 0);
define('VERBOSE', 0); define('VERBOSE', 0);
// TESTING THE UPDATE MANAGER // TESTING THE UPDATE MANAGER.
enterprise_include_once('include/functions_enterprise_api.php'); enterprise_include_once('include/functions_enterprise_api.php');
$ipOrigin = $_SERVER['REMOTE_ADDR']; $ipOrigin = $_SERVER['REMOTE_ADDR'];
@ -41,26 +58,30 @@ $info = get_parameter('info', '');
$other = parseOtherParameter($otherSerialize, $otherMode); $other = parseOtherParameter($otherSerialize, $otherMode);
$other = parseOtherParameter($otherSerialize, $otherMode); $other = parseOtherParameter($otherSerialize, $otherMode);
$apiPassword = io_output_password(db_get_value_filter('value', 'tconfig', ['token' => 'api_password'])); $apiPassword = io_output_password(
db_get_value_filter(
'value',
'tconfig',
['token' => 'api_password']
)
);
$correctLogin = false; $correctLogin = false;
$no_login_msg = ''; $no_login_msg = '';
// Clean unwanted output // Clean unwanted output.
ob_clean(); ob_clean();
// READ THIS: // READ THIS:
// Special call without checks to retrieve version and build of the Pandora FMS // Special call without checks to retrieve version and build of the Pandora FMS
// This info is avalable from the web console without login // This info is avalable from the web console without login
// Don't change the format, it is parsed by applications // Don't change the format, it is parsed by applications.
switch ($info) { if ($info == 'version') {
case 'version': if (!$config['MR']) {
if (!$config['MR']) { $config['MR'] = 0;
$config['MR'] = 0; }
}
echo 'Pandora FMS '.$pandora_version.' - '.$build_version.' MR'.$config['MR'];
echo 'Pandora FMS '.$pandora_version.' - '.$build_version.' MR'.$config['MR'];
exit; exit;
} }
@ -68,14 +89,19 @@ if (isInACL($ipOrigin)) {
if (empty($apiPassword) || (!empty($apiPassword) && $api_password === $apiPassword)) { if (empty($apiPassword) || (!empty($apiPassword) && $api_password === $apiPassword)) {
$user_in_db = process_user_login($user, $password, true); $user_in_db = process_user_login($user, $password, true);
if ($user_in_db !== false) { if ($user_in_db !== false) {
$config['id_usuario'] = $user_in_db;
// Compat.
$config['id_user'] = $user_in_db; $config['id_user'] = $user_in_db;
$correctLogin = true; $correctLogin = true;
if (session_status() === PHP_SESSION_NONE) { if (session_status() === PHP_SESSION_NONE) {
session_start(); session_start();
$_SESSION = [];
} }
$_SESSION['id_usuario'] = $user; $_SESSION['id_usuario'] = $user;
config_prepare_session();
session_write_close(); session_write_close();
} else { } else {
$no_login_msg = 'Incorrect user credentials'; $no_login_msg = 'Incorrect user credentials';
@ -84,7 +110,7 @@ if (isInACL($ipOrigin)) {
$no_login_msg = 'Incorrect given API password'; $no_login_msg = 'Incorrect given API password';
} }
} else { } else {
$no_login_msg = "IP $ipOrigin is not in ACL list"; $no_login_msg = 'IP '.$ipOrigin.' is not in ACL list';
} }
if ($correctLogin) { if ($correctLogin) {
@ -93,11 +119,14 @@ if ($correctLogin) {
} else { } else {
$function_name = ''; $function_name = '';
// Check if is an extension function and get the function name // Check if is an extension function and get the function name.
if ($op2 == 'extension') { if ($op2 == 'extension') {
$extension_api_url = $config['homedir'].'/'.EXTENSIONS_DIR."/$ext_name/$ext_name.api.php"; $extension_api_url = $config['homedir'].'/'.EXTENSIONS_DIR.'/'.$ext_name.'/'.$ext_name.'.api.php';
// The extension API file must exist and the extension must be enabled // The extension API file must exist and the extension must be
if (file_exists($extension_api_url) && !in_array($ext_name, extensions_get_disabled_extensions())) { // enabled.
if (file_exists($extension_api_url)
&& !in_array($ext_name, extensions_get_disabled_extensions())
) {
include_once $extension_api_url; include_once $extension_api_url;
$function_name = 'apiextension_'.$op.'_'.$ext_function; $function_name = 'apiextension_'.$op.'_'.$ext_function;
} }
@ -107,16 +136,19 @@ if ($correctLogin) {
if ($op == 'set' && $id) { if ($op == 'set' && $id) {
switch ($op2) { switch ($op2) {
case 'update_agent': case 'update_agent':
case 'add_module_in_conf': case 'add_module_in_conf':
case 'update_module_in_conf': case 'update_module_in_conf':
case 'delete_module_in_conf': case 'delete_module_in_conf':
$agent = agents_locate_agent($id);
$id_os = db_get_value_sql('select id_os from tagente where id_agente = '.$id); if ($agent !== false) {
$id_os = $agent['id_os'];
if ($id_os == 100) { if ($id_os == 100) {
returnError('not_allowed_operation_cluster', $returnType); returnError(
return false; 'not_allowed_operation_cluster',
$returnType
);
return false;
}
} }
break; break;
@ -127,12 +159,16 @@ if ($correctLogin) {
case 'create_snmp_module': case 'create_snmp_module':
case 'delete_module': case 'delete_module':
case 'delete_agent': case 'delete_agent':
$agent = agents_locate_agent($id);
$id_os = db_get_value_sql('select id_os from tagente where nombre = "'.$id.'"'); if ($agent !== false) {
$id_os = $agent['id_os'];
if ($id_os == 100) { if ($id_os == 100) {
returnError('not_allowed_operation_cluster', $returnType); returnError(
return false; 'not_allowed_operation_cluster',
$returnType
);
return false;
}
} }
break; break;
@ -141,60 +177,98 @@ if ($correctLogin) {
case 'update_data_module': case 'update_data_module':
case 'update_snmp_module': case 'update_snmp_module':
$id_os = db_get_value_sql('select id_os from tagente where id_agente = (select id_agente from tagente_modulo where id_agente_modulo ='.$id.')'); $id_os = db_get_value_sql(
sprintf(
'SELECT id_os
FROM tagente
WHERE id_agente = (
SELECT id_agente
FROM tagente_modulo
WHERE id_agente_modulo = %d
)',
$id
)
);
if ($id_os == 100) { if ($id_os == 100) {
returnError('not_allowed_operation_cluster', $returnType); returnError(
'not_allowed_operation_cluster',
$returnType
);
return false; return false;
} }
break; break;
case 'delete_user_permission': case 'delete_user_permission':
if ($user_db === '') { if ($user_db === '') {
returnError(__('User or group not specified'), __('User, group not specified')); returnError(
__('User or group not specified'),
__('User, group not specified')
);
return; return;
} }
$id_os = api_set_delete_user_profiles($thrash1, $thrash2, $other, $returnType); $id_os = api_set_delete_user_profiles(
$thrash1,
$thrash2,
$other,
$returnType
);
if ($id_os != 100) { if ($id_os != 100) {
return; return;
} }
if ($id_os == false) { if ($id_os == false) {
returnError('not_allowed_operation_cluster', $returnType); returnError(
'not_allowed_operation_cluster',
$returnType
);
return false; return false;
} }
break; break;
case 'add_permission_user_to_group': case 'add_permission_user_to_group':
if ($user_db == null
if ($user_db == null || $group_db == null || $id_up == null) { || $group_db == null
returnError(__('User, group or profile not specified'), __('User, group or profile status not specified')); || $id_up == null
) {
returnError(
__('User, group or profile not specified'),
__('User, group or profile status not specified')
);
return; return;
} }
$id_os = api_set_add_permission_user_to_group($thrash1, $thrash2, $other, $returnType); $id_os = api_set_add_permission_user_to_group(
$thrash1,
$thrash2,
$other,
$returnType
);
if ($id_os != 100) { if ($id_os != 100) {
return; return;
} }
if ($id_os == false) { if ($id_os == false) {
returnError('not_allowed_operation_cluster', $returnType); returnError(
'not_allowed_operation_cluster',
$returnType
);
return false; return false;
} }
break; break;
default: default:
// Ignore.
// break; break;
} }
} }
} }
// Check if the function exists // Check if the function exists.
if (function_exists($function_name)) { if (function_exists($function_name)) {
if (!DEBUG) { if (!DEBUG) {
error_reporting(0); error_reporting(0);
@ -205,18 +279,37 @@ if ($correctLogin) {
ini_set('display_errors', 1); ini_set('display_errors', 1);
} }
call_user_func($function_name, $id, $id2, $other, $returnType, $user_in_db); call_user_func(
$function_name,
$id,
$id2,
$other,
$returnType,
$user_in_db
);
} else { } else {
returnError('no_exist_operation', $returnType); returnError('no_exist_operation', $returnType);
} }
} }
} else { } else {
// TODO: Implement a new switch in config to enable / disable /*
// ACL auth failure: if enabled and have lots of traffic can produce millions * //TODO: Implement a new switch in config to enable / disable
// of records and a considerable OVERHEAD in the system :( * ACL auth failure: if enabled and have lots of traffic can produce
// db_pandora_audit("API access Failed", $no_login_msg, $user, $ipOrigin); * millions of records and a considerable OVERHEAD in the system :(
* db_pandora_audit("API access Failed", $no_login_msg, $user, $ipOrigin);
*/
sleep(15); sleep(15);
// Protection on DoS attacks // Protection on DoS attacks.
echo 'auth error'; echo 'auth error';
} }
// Logout.
if (session_status() === PHP_SESSION_ACTIVE) {
$_SESSION = [];
// Could give a warning if no session file is created. Ignore.
@session_destroy();
header_remove('Set-Cookie');
setcookie(session_name(), $_COOKIE[session_name()], (time() - 4800), '/');
}

View File

@ -11,12 +11,13 @@
// 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.
// Global & session manageme // Global & session manageme
session_id($_REQUEST['session_id']);
require_once 'config.php'; require_once 'config.php';
require_once $config['homedir'].'/include/auth/mysql.php';
require_once $config['homedir'].'/include/functions.php'; require_once __DIR__.'/config.php';
require_once $config['homedir'].'/include/functions_db.php'; require_once __DIR__.'/functions.php';
require_once __DIR__.'/functions_db.php';
require_once __DIR__.'/auth/mysql.php';
require_once $config['homedir'].'/include/lib/User.php';
require_once $config['homedir'].'/include/functions_reporting.php'; require_once $config['homedir'].'/include/functions_reporting.php';
require_once $config['homedir'].'/include/functions_graph.php'; require_once $config['homedir'].'/include/functions_graph.php';
require_once $config['homedir'].'/include/functions_custom_graphs.php'; require_once $config['homedir'].'/include/functions_custom_graphs.php';
@ -24,18 +25,56 @@ require_once $config['homedir'].'/include/functions_modules.php';
require_once $config['homedir'].'/include/functions_agents.php'; require_once $config['homedir'].'/include/functions_agents.php';
require_once $config['homedir'].'/include/functions_tags.php'; require_once $config['homedir'].'/include/functions_tags.php';
check_login();
// Initialize session.
global $config; global $config;
// get_parameter(array)('data', '');
// Try to initialize session using existing php session id.
$user = new PandoraFMS\User(['phpsessionid' => $_REQUEST['session_id']]);
if (check_login(false) === false) {
// Error handler.
?>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Access denied</title>
<link rel="stylesheet" href="styles/pandora.css" type="text/css" />
<link rel="stylesheet" href="styles/pandora_minimal.css" type="text/css" />
<link rel="stylesheet" href="styles/js/jquery-ui.min.css" type="text/css" />
<link rel="stylesheet" href="styles/js/jquery-ui_custom.css" type="text/css" />
<script language="javascript" type='text/javascript' src='javascript/pandora.js'></script>
<script language="javascript" type='text/javascript' src='javascript/jquery-3.3.1.min.js'></script>
</head>
<body>
<h1>Access is not granted</h1>
<script type="text/javascript">
$('document').ready(function () {
setTimeout(function () {
try {
var status = window.callPhantom({ status: "loaded" });
} catch (error) {
console.log("CALLBACK ERROR", error.message)
}
}, 100);
});
</script>
</body>
</html>
<?php
exit;
}
// Access granted.
$params = json_decode($_REQUEST['data'], true); $params = json_decode($_REQUEST['data'], true);
// Metaconsole connection to the node // Metaconsole connection to the node.
$server_id = $params['server_id']; $server_id = $params['server_id'];
if ($config['metaconsole'] && !empty($server_id)) { if ($config['metaconsole'] && !empty($server_id)) {
$server = metaconsole_get_connection_by_id($server_id); $server = metaconsole_get_connection_by_id($server_id);
// Error connecting // Error connecting.
if (metaconsole_connect($server) !== NOERR) { if (metaconsole_connect($server) !== NOERR) {
echo '<html>'; echo '<html>';
echo '<body>'; echo '<body>';
@ -48,8 +87,9 @@ if ($config['metaconsole'] && !empty($server_id)) {
$user_language = get_user_language($config['id_user']); $user_language = get_user_language($config['id_user']);
if (file_exists('languages/'.$user_language.'.mo')) { if (file_exists('languages/'.$user_language.'.mo') === true) {
$l10n = new gettext_reader(new CachedFileReader('languages/'.$user_language.'.mo')); $cfr = new CachedFileReader('languages/'.$user_language.'.mo');
$l10n = new gettext_reader($cfr);
$l10n->load_tables(); $l10n->load_tables();
} }
@ -208,7 +248,7 @@ if (file_exists('languages/'.$user_language.'.mo')) {
break; break;
default: default:
// code... // Code...
break; break;
} }

View File

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

View File

@ -6225,9 +6225,8 @@ function api_set_planned_downtimes_created($id, $thrash1, $other, $thrash3)
return; return;
} }
$date_from = strtotime(html_entity_decode($other['data'][1])); $date_from = strtotime(html_entity_decode($other['data'][1].' '.$other['data'][11]));
$date_to = strtotime(html_entity_decode($other['data'][2])); $date_to = strtotime(html_entity_decode($other['data'][2].' '.$other['data'][12]));
$values = []; $values = [];
$values['name'] = $id; $values['name'] = $id;
$values = [ $values = [
@ -8294,12 +8293,16 @@ function otherParameter2Filter($other, $return_as_array=false)
$filter['criticity'] = $other['data'][1]; $filter['criticity'] = $other['data'][1];
} }
$idAgent = null;
if (isset($other['data'][2]) && $other['data'][2] != '') { if (isset($other['data'][2]) && $other['data'][2] != '') {
$idAgents = agents_get_agent_id_by_alias($other['data'][2]); $idAgents = agents_get_agent_id_by_alias($other['data'][2]);
if (!empty($idAgent)) { if (!empty($idAgents)) {
$filter[] = 'id_agente IN ('.explode(',', $idAgents).')'; $idAgent = [];
foreach ($idAgents as $key => $value) {
$idAgent[] .= $value['id_agente'];
}
$filter[] = 'id_agente IN ('.implode(',', $idAgent).')';
} else { } else {
$filter['sql'] = '1=0'; $filter['sql'] = '1=0';
} }
@ -8312,9 +8315,21 @@ function otherParameter2Filter($other, $return_as_array=false)
$filterModule['id_agente'] = $idAgent; $filterModule['id_agente'] = $idAgent;
} }
$idAgentModulo = db_get_value_filter('id_agente_modulo', 'tagente_modulo', $filterModule); $idAgentModulo = db_get_all_rows_filter('tagente_modulo', $filterModule, 'id_agente_modulo');
if ($idAgentModulo !== false) {
$filter['id_agentmodule'] = $idAgentModulo; if (!empty($idAgentModulo)) {
$id_agentmodule = [];
foreach ($idAgentModulo as $key => $value) {
$id_agentmodule[] .= $value['id_agente_modulo'];
}
$idAgentModulo = $id_agentmodule;
if ($idAgentModulo !== false) {
$filter['id_agentmodule'] = $idAgentModulo;
}
} else {
// If the module doesn't exist or doesn't exist in that agent.
$filter['sql'] = '1=0';
} }
} }
@ -8403,13 +8418,11 @@ function otherParameter2Filter($other, $return_as_array=false)
if ($other['data'][12] == 'more_criticity') { if ($other['data'][12] == 'more_criticity') {
$filter['more_criticity'] = true; $filter['more_criticity'] = true;
} }
} else {
} }
} else { } else {
if ($return_as_array) { if ($return_as_array) {
$filter['total'] = false; $filter['total'] = false;
$filter['more_criticity'] = false; $filter['more_criticity'] = false;
} else {
} }
} }
@ -8417,7 +8430,7 @@ function otherParameter2Filter($other, $return_as_array=false)
if ($return_as_array) { if ($return_as_array) {
$filter['id_group'] = $other['data'][13]; $filter['id_group'] = $other['data'][13];
} else { } else {
$filterString .= ' AND id_grupo ='.$other['data'][13]; $filterString .= ' AND id_grupo = '.$other['data'][13];
} }
} }
@ -10046,8 +10059,7 @@ function get_events_with_user($trash1, $trash2, $other, $returnType, $user_in_db
$data['type'] = 'array'; $data['type'] = 'array';
$data['data'] = $result; $data['data'] = $result;
returnData($returnType, $data, $separator); // returnData($returnType, $data, $separator);
if (empty($result)) { if (empty($result)) {
return false; return false;
} }
@ -10087,8 +10099,6 @@ function api_get_events($trash1, $trash2, $other, $returnType, $user_in_db=null)
returnError('ERROR_API_PANDORAFMS', $returnType); returnError('ERROR_API_PANDORAFMS', $returnType);
} }
} }
return;
} }
if ($other['type'] == 'string') { if ($other['type'] == 'string') {
@ -10105,7 +10115,7 @@ function api_get_events($trash1, $trash2, $other, $returnType, $user_in_db=null)
$filterString = otherParameter2Filter($other); $filterString = otherParameter2Filter($other);
} }
if (defined('METACONSOLE')) { if (is_metaconsole()) {
$dataRows = db_get_all_rows_filter('tmetaconsole_event', $filterString); $dataRows = db_get_all_rows_filter('tmetaconsole_event', $filterString);
} else { } else {
$dataRows = db_get_all_rows_filter('tevento', $filterString); $dataRows = db_get_all_rows_filter('tevento', $filterString);

View File

@ -4615,7 +4615,7 @@ function events_page_comments($event, $ajax=false)
foreach ($comm as $c) { foreach ($comm as $c) {
$data[0] = '<b>'.$c['action'].' by '.$c['id_user'].'</b>'; $data[0] = '<b>'.$c['action'].' by '.$c['id_user'].'</b>';
$data[0] .= '<br><br><i>'.date($config['date_format'], $c['utimestamp']).'</i>'; $data[0] .= '<br><br><i>'.date($config['date_format'], $c['utimestamp']).'</i>';
$data[1] = $c['comment']; $data[1] = '<p style="word-break: break-word;">'.$c['comment'].'</p>';
$table_comments->data[] = $data; $table_comments->data[] = $data;
} }
} }

View File

@ -3595,7 +3595,32 @@ function graph_custom_sql_graph(
$SQL_GRAPH_MAX_LABEL_SIZE = 20; $SQL_GRAPH_MAX_LABEL_SIZE = 20;
if (is_metaconsole()) {
$server = metaconsole_get_connection_names();
$connection = metaconsole_get_connection($server);
metaconsole_connect($connection);
}
$report_content = db_get_row('treport_content', 'id_rc', $id); $report_content = db_get_row('treport_content', 'id_rc', $id);
if ($report_content == false || $report_content == '') {
$report_content = db_get_row('treport_content_template', 'id_rc', $id);
}
if ($report_content == false || $report_content == '') {
enterprise_hook('metaconsole_restore_db');
$report_content = db_get_row('treport_content', 'id_rc', $id);
if ($report_content == false || $report_content == '') {
$report_content = db_get_row('treport_content_template', 'id_rc', $id);
}
if (is_metaconsole()) {
$server = metaconsole_get_connection_names();
$connection = metaconsole_get_connection($server);
metaconsole_connect($connection);
}
}
if ($id != null) { if ($id != null) {
$historical_db = db_get_value_sql('SELECT historical_db from treport_content where id_rc ='.$id); $historical_db = db_get_value_sql('SELECT historical_db from treport_content where id_rc ='.$id);
} else { } else {
@ -3609,22 +3634,9 @@ function graph_custom_sql_graph(
$sql = io_safe_output($sql['sql']); $sql = io_safe_output($sql['sql']);
} }
if (($config['metaconsole'] == 1) && defined('METACONSOLE')) {
$metaconsole_connection = enterprise_hook('metaconsole_get_connection', [$report_content['server_name']]);
if ($metaconsole_connection === false) {
return false;
}
if (enterprise_hook('metaconsole_load_external_db', [$metaconsole_connection]) != NOERR) {
// ui_print_error_message ("Error connecting to ".$server_name);
return false;
}
}
$data_result = db_get_all_rows_sql($sql, $historical_db); $data_result = db_get_all_rows_sql($sql, $historical_db);
if (($config['metaconsole'] == 1) && defined('METACONSOLE')) { if (is_metaconsole()) {
enterprise_hook('metaconsole_restore_db'); enterprise_hook('metaconsole_restore_db');
} }

View File

@ -2327,7 +2327,13 @@ function migrate_older_open_maps($id)
$new_map_filter = []; $new_map_filter = [];
$new_map_filter['dont_show_subgroups'] = $old_networkmap['dont_show_subgroups']; $new_map_filter['dont_show_subgroups'] = $old_networkmap['dont_show_subgroups'];
$new_map_filter['node_radius'] = 40; $new_map_filter['node_radius'] = 40;
$new_map_filter['id_migrate_map'] = $id; $new_map_filter['x_offs'] = 0;
$new_map_filter['y_offs'] = 0;
$new_map_filter['z_dash'] = '0.5';
$new_map_filter['node_sep'] = '0.1';
$new_map_filter['rank_sep'] = 1;
$new_map_filter['mindist'] = 1;
$new_map_filter['kval'] = '0.1';
$map_values['filter'] = json_encode($new_map_filter); $map_values['filter'] = json_encode($new_map_filter);
$map_values['description'] = 'Mapa open migrado'; $map_values['description'] = 'Mapa open migrado';
@ -2340,11 +2346,7 @@ function migrate_older_open_maps($id)
$map_values['source_period'] = 60; $map_values['source_period'] = 60;
$map_values['source'] = 0; $map_values['source'] = 0;
$map_values['source_data'] = $old_networkmap['id_group']; $map_values['source_data'] = $old_networkmap['id_group'];
if ($old_networkmap['type'] == 'radial_dinamic') { $map_values['generation_method'] = 3;
$map_values['generation_method'] = 6;
} else {
$map_values['generation_method'] = 4;
}
$map_values['generated'] = 0; $map_values['generated'] = 0;

View File

@ -796,6 +796,11 @@ function planned_downtimes_created($values)
'return' => false, 'return' => false,
'message' => __('Not created. Error inserting data').'. '.__('There is no group with such id'), 'message' => __('Not created. Error inserting data').'. '.__('There is no group with such id'),
]; ];
} else if (!$values['date_from'] || !$values['date_to']) {
return [
'return' => false,
'message' => __('Not created. Error inserting data').'. '.__('Date is wrong formatted'),
];
} else { } else {
if (trim(io_safe_output($values['name'])) != '') { if (trim(io_safe_output($values['name'])) != '') {
if (!$check) { if (!$check) {

View File

@ -282,6 +282,15 @@ function reporting_make_reporting_data(
$agents_to_macro = $content['id_agent']; $agents_to_macro = $content['id_agent'];
} }
// Metaconsole connection.
if (is_metaconsole()) {
$server = metaconsole_get_connection_names();
$connection = metaconsole_get_connection($server);
if (metaconsole_connect($connection) != NOERR) {
continue;
}
}
if (isset($content['style']['name_label'])) { if (isset($content['style']['name_label'])) {
// Add macros name. // Add macros name.
$items_label = []; $items_label = [];
@ -294,14 +303,6 @@ function reporting_make_reporting_data(
$metaconsole_on = is_metaconsole(); $metaconsole_on = is_metaconsole();
$server_name = $content['server_name']; $server_name = $content['server_name'];
// Metaconsole connection.
if ($metaconsole_on && $server_name != '') {
$connection = metaconsole_get_connection($server_name);
if (!metaconsole_load_external_db($connection)) {
continue;
}
}
$items_label['agent_description'] = agents_get_description( $items_label['agent_description'] = agents_get_description(
$content['id_agent'] $content['id_agent']
); );
@ -2824,13 +2825,12 @@ function reporting_group_report($report, $content)
$content['name'] = __('Group Report'); $content['name'] = __('Group Report');
} }
if ($config['metaconsole']) { if (is_metaconsole()) {
$id_meta = metaconsole_get_id_server($content['server_name']); $server = metaconsole_get_connection_names();
$connection = metaconsole_get_connection($server);
$server = metaconsole_get_connection_by_id($id_meta);
metaconsole_connect($server);
} }
$return['server_name'] = $server[0];
$return['title'] = $content['name']; $return['title'] = $content['name'];
$return['subtitle'] = groups_get_name($content['id_group'], true); $return['subtitle'] = groups_get_name($content['id_group'], true);
$return['description'] = $content['description']; $return['description'] = $content['description'];
@ -3488,7 +3488,7 @@ function reporting_network_interfaces_report($report, $content, $type='dinamic',
$return['failed'] = null; $return['failed'] = null;
$return['data'] = []; $return['data'] = [];
if ($config['metaconsole']) { if (is_metaconsole()) {
$server_names = metaconsole_get_connection_names(); $server_names = metaconsole_get_connection_names();
if (isset($server_names) && is_array($server_names)) { if (isset($server_names) && is_array($server_names)) {
foreach ($server_names as $key => $value) { foreach ($server_names as $key => $value) {
@ -3505,7 +3505,8 @@ function reporting_network_interfaces_report($report, $content, $type='dinamic',
$content, $content,
$report, $report,
$fullscale, $fullscale,
$pdf $pdf,
$id_meta
); );
metaconsole_restore_db(); metaconsole_restore_db();
} }
@ -4190,6 +4191,19 @@ function reporting_sql_graph(
$return['description'] = $content['description']; $return['description'] = $content['description'];
$return['date'] = reporting_get_date_text(); $return['date'] = reporting_get_date_text();
$module_source = db_get_all_rows_sql(
'SELECT id_agent_module
FROM tgraph_source
WHERE id_graph = '.$content['id_gs']
);
if (isset($module_source) && is_array($module_source)) {
$modules = [];
foreach ($module_source as $key => $value) {
$modules[$key] = $value['id_agent_module'];
}
}
switch ($type) { switch ($type) {
case 'dinamic': case 'dinamic':
case 'static': case 'static':
@ -4206,6 +4220,16 @@ function reporting_sql_graph(
break; break;
case 'data': case 'data':
$data = [];
foreach ($modules as $key => $value) {
$data[$value] = modules_get_agentmodule_data(
$value,
$content['period'],
$report['datetime']
);
}
$return['chart'] = $data;
break; break;
} }
@ -4406,6 +4430,7 @@ function reporting_netflow(
switch ($type) { switch ($type) {
case 'dinamic': case 'dinamic':
case 'static': case 'static':
case 'data':
$return['chart'] = netflow_draw_item( $return['chart'] = netflow_draw_item(
($report['datetime'] - $content['period']), ($report['datetime'] - $content['period']),
$report['datetime'], $report['datetime'],
@ -7561,8 +7586,35 @@ function reporting_custom_graph(
$content['name'] = __('Simple graph'); $content['name'] = __('Simple graph');
} }
$module_source = db_get_all_rows_sql(
'SELECT id_agent_module
FROM tgraph_source
WHERE id_graph = '.$content['id_gs']
);
if (isset($module_source) && is_array($module_source)) {
$modules = [];
foreach ($module_source as $key => $value) {
$modules[$key] = $value['id_agent_module'];
}
}
$agent_description = agents_get_description($id_agent);
$agent_group = agents_get_agent_group($id_agent);
$agent_address = agents_get_address($id_agent);
$agent_alias = agents_get_alias($id_agent);
$module_name = modules_get_agentmodule_name(
$id_agent_module
);
$module_description = modules_get_agentmodule_descripcion(
$id_agent_module
);
$return['title'] = $content['name']; $return['title'] = $content['name'];
$return['subtitle'] = io_safe_output($graph['name']); $return['subtitle'] = io_safe_output($graph['name']);
$return['agent_name'] = $agent_alias;
$return['module_name'] = $module_name;
$return['description'] = $content['description']; $return['description'] = $content['description'];
$return['date'] = reporting_get_date_text( $return['date'] = reporting_get_date_text(
$report, $report,
@ -7606,6 +7658,19 @@ function reporting_custom_graph(
); );
break; break;
case 'data':
$data = [];
foreach ($modules as $key => $value) {
$data[$value] = modules_get_agentmodule_data(
$value,
$content['period'],
$report['datetime']
);
}
$return['chart'] = $data;
break;
} }
if ($type_report == 'custom_graph') { if ($type_report == 'custom_graph') {

View File

@ -769,10 +769,20 @@ function reports_get_report_types($template=false, $not_editor=false)
'optgroup' => __('Grouped'), 'optgroup' => __('Grouped'),
'name' => __('General'), 'name' => __('General'),
]; ];
$types['group_report'] = [ if (is_metaconsole()) {
'optgroup' => __('Grouped'), if ($template === false) {
'name' => __('Group report'), $types['group_report'] = [
]; 'optgroup' => __('Grouped'),
'name' => __('Group report'),
];
}
} else {
$types['group_report'] = [
'optgroup' => __('Grouped'),
'name' => __('Group report'),
];
}
$types['exception'] = [ $types['exception'] = [
'optgroup' => __('Grouped'), 'optgroup' => __('Grouped'),
'name' => __('Exception'), 'name' => __('Exception'),
@ -880,7 +890,7 @@ function reports_get_report_types($template=false, $not_editor=false)
]; ];
} }
if ($config['enterprise_installed']) { if ($config['enterprise_installed'] && $template === false) {
$types['event_report_log'] = [ $types['event_report_log'] = [
'optgroup' => __('Log'), 'optgroup' => __('Log'),
'name' => __('Log report'), 'name' => __('Log report'),

View File

@ -39,7 +39,7 @@ if (isset($config['homedir'])) {
/** /**
* Transform bbcode to HTML. * Transform bbcode to HTML and truncate log.
* *
* @param string $text Text. * @param string $text Text.
* @param array $allowed_tags Allowed_tags. * @param array $allowed_tags Allowed_tags.
@ -48,16 +48,22 @@ if (isset($config['homedir'])) {
*/ */
function ui_bbcode_to_html($text, $allowed_tags=['[url]']) function ui_bbcode_to_html($text, $allowed_tags=['[url]'])
{ {
if (array_search('[url]', $allowed_tags) !== false) { if (array_search('[url]', $allowed_tags) !== false || a) {
// If link hasn't http, add it.
if (preg_match('/https?:\/\//', $text)) {
$html_bbcode = '<a target="_blank" rel="noopener noreferrer" href="$1">$2</a>';
} else {
$html_bbcode = '<a target="_blank" rel="noopener noreferrer" href="http://$1">$2</a>';
}
// Replace bbcode format [url=www.example.org] String [/url] with or without http and slashes // Replace bbcode format [url=www.example.org] String [/url] with or without http and slashes
$return = preg_replace('/\[url(?|](((?:https?:\/\/)?[^[]+))|(?:=[\'"]?((?:https?:\/\/)?[^]]+?)[\'"]?)](.+?))\[\/url]/', $html_bbcode, $text); preg_match('/\[url(?|](((?:https?:\/\/)?[^[]+))|(?:=[\'"]?((?:https?:\/\/)?[^]]+?)[\'"]?)](.+?))\[\/url]/', $text, $matches);
if ($matches) {
$url = $matches[1];
// Truncate text
$t_text = ui_print_truncate_text($matches[2]);
// If link hasn't http, add it.
if (preg_match('/https?:\/\//', $text)) {
$return = '<a target="_blank" rel="noopener noreferrer" href="'.$matches[1].'">'.$t_text.'</a>';
} else {
$return = '<a target="_blank" rel="noopener noreferrer" href="http://'.$matches[1].'">'.$t_text.'</a>';
}
} else {
$return = ui_print_truncate_text($text);
}
} }
return $return; return $return;
@ -2521,9 +2527,22 @@ function ui_print_module_warn_value(
$str_warning, $str_warning,
$max_critical, $max_critical,
$min_critical, $min_critical,
$str_critical $str_critical,
$warning_inverse=0,
$critical_inverse=0
) { ) {
$data = "<span title='".__('Warning').': '.__('Max').$max_warning.'/'.__('Min').$min_warning.' - '.__('Critical').': '.__('Max').$max_critical.'/'.__('Min').$min_critical."'>"; $war_inv = '';
$crit_inv = '';
if ($warning_inverse == 1) {
$war_inv = ' (inv)';
}
if ($critical_inverse == 1) {
$crit_inv = ' (inv)';
}
$data = "<span title='".__('Warning').': '.__('Max').$max_warning.'/'.__('Min').$min_warning.$war_inv.' - '.__('Critical').': '.__('Max').$max_critical.'/'.__('Min').$min_critical.$crit_inv."'>";
if ($max_warning != $min_warning) { if ($max_warning != $min_warning) {
$data .= format_for_graph($max_warning).'/'.format_for_graph($min_warning); $data .= format_for_graph($max_warning).'/'.format_for_graph($min_warning);
@ -5667,3 +5686,62 @@ function ui_print_breadcrums($tab_name)
return $section; return $section;
} }
/**
* Show last comment
*
* @param array $comments array with comments
*
* @return string HTML string with the last comment of the events.
*/
function ui_print_comments($comments)
{
global $config;
$comments = explode('<br>', $comments);
$comments = str_replace(["\n", '&#x0a;'], '<br>', $comments);
if (is_array($comments)) {
foreach ($comments as $comm) {
if (empty($comm)) {
continue;
}
$comments_array[] = json_decode(io_safe_output($comm), true);
}
}
foreach ($comments_array as $comm) {
// Show the comments more recent first.
if (is_array($comm)) {
$last_comment[] = array_reverse($comm);
}
}
// Only show the last comment. If commment its too long,the comment will short with ...
// If $config['prominent_time'] is timestamp the date show Month, day, hour and minutes.
// Else show comments hours ago
if ($last_comment[0][0]['action'] != 'Added comment') {
$last_comment[0][0]['comment'] = $last_comment[0][0]['action'];
}
$short_comment = substr($last_comment[0][0]['comment'], 0, '80px');
if ($config['prominent_time'] == 'timestamp') {
$comentario = '<i>'.date($config['date_format'], $last_comment[0][0]['utimestamp']).'&nbsp;('.$last_comment[0][0]['id_user'].'):&nbsp;'.$last_comment[0][0]['comment'].'';
if (strlen($comentario) > '200px') {
$comentario = '<i>'.date($config['date_format'], $last_comment[0][0]['utimestamp']).'&nbsp;('.$last_comment[0][0]['id_user'].'):&nbsp;'.$short_comment.'...';
}
} else {
$rest_time = (time() - $last_comment[0][0]['utimestamp']);
$time_last = (($rest_time / 60) / 60);
$comentario = '<i>'.number_format($time_last, 0).'&nbsp; Hours &nbsp;('.$last_comment[0][0]['id_user'].'):&nbsp;'.$last_comment[0][0]['comment'].'';
if (strlen($comentario) > '200px') {
$comentario = '<i>'.number_format($time_last, 0).'&nbsp; Hours &nbsp;('.$last_comment[0][0]['id_user'].'):&nbsp;'.$short_comment.'...';
}
}
return io_safe_output($comentario);
}

View File

@ -170,17 +170,7 @@ function vbar_graph(
setup_watermark($water_mark, $water_mark_file, $water_mark_url); setup_watermark($water_mark, $water_mark_file, $water_mark_url);
if (empty($chart_data)) { if (empty($chart_data)) {
return html_print_image( return graph_nodata_image($width, $height, 'vbar');
$no_data_image,
true,
[
'width' => $width,
'height' => $height,
'title' => __('No data to show'),
],
false,
true
);
} }
if ($ttl == 2) { if ($ttl == 2) {
@ -357,17 +347,7 @@ function hbar_graph(
setup_watermark($water_mark, $water_mark_file, $water_mark_url); setup_watermark($water_mark, $water_mark_file, $water_mark_url);
if (empty($chart_data)) { if (empty($chart_data)) {
return html_print_image( return graph_nodata_image($width, $height, 'hbar');
$no_data_image,
true,
[
'width' => $width,
'height' => $height,
'title' => __('No data to show'),
],
false,
true
);
} }
if ($ttl == 2) { if ($ttl == 2) {

View File

@ -87,9 +87,9 @@ function js_refreshParentLines(layerName) {
{ {
strokeWidth: 2, strokeWidth: 2,
fillOpacity: 0.2, fillOpacity: 0.2,
fillColor: "red", fillColor: "black",
strokeDashstyle: "dash", strokeDashstyle: "dash",
strokeColor: "red" strokeColor: "black"
} }
); );

View File

@ -63,6 +63,20 @@ function show_event_dialog(event, dialog_page, result) {
height: 600 height: 600
}) })
.show(); .show();
$.post({
url: "ajax.php",
data: {
page: "include/ajax/events",
get_comments: 1,
event: event,
filter: values
},
dataType: "html",
success: function(data) {
$("#extended_event_comments_page").empty();
$("#extended_event_comments_page").html(data);
}
});
$("#refrcounter").countdown("pause"); $("#refrcounter").countdown("pause");
$("div.vc-countdown").countdown("pause"); $("div.vc-countdown").countdown("pause");

View File

@ -0,0 +1,116 @@
<?php
/**
* PHP script to manage Pandora FMS websockets.
*
* @category Websocket
* @package Pandora FMS
* @subpackage Console
* @version 1.0.0
* @license See below
*
* ______ ___ _______ _______ ________
* | __ \.-----.--.--.--| |.-----.----.-----. | ___| | | __|
* | __/| _ | | _ || _ | _| _ | | ___| |__ |
* |___| |___._|__|__|_____||_____|__| |___._| |___| |__|_|__|_______|
*
* ============================================================================
* Copyright (c) 2005-2019 Artica Soluciones Tecnologicas
* Please see http://pandorafms.org for full contribution list
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation for version 2.
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* ============================================================================
*/
// Begin.
namespace PandoraFMS;
/**
* Object user.
*/
class User
{
/**
* Current 'id_usuario'.
*
* @var string
*/
public $idUser;
/**
* Current PHP session ids.
*
* @var array
*/
public $sessions = [];
/**
* Initializes a user object.
*
* @param array $data User information
* - Username
* - PHP session ID.
*/
public function __construct($data)
{
global $config;
// Unset user.
unset($config['id_usuario']);
unset($_SESSION['id_usuario']);
if (is_array($data) === true) {
if (isset($data['phpsessionid']) === true) {
$this->sessions[$data['phpsessionid']] = 1;
$info = \db_get_row_filter(
'tsessions_php',
['id_session' => $data['phpsessionid']]
);
if ($info !== false) {
// Process.
$session_data = session_decode($info['data']);
$this->idUser = $_SESSION['id_usuario'];
// Valid session.
return $this;
}
return null;
}
if (isset($data['id_usuario']) === true
&& isset($data['password']) === true
) {
$user_in_db = process_user_login($user, $password, true);
if ($user_in_db !== false) {
$config['id_usuario'] = $user_in_db;
$correctLogin = true;
// Originally at api.php.
if (session_status() === PHP_SESSION_NONE) {
session_start();
}
$_SESSION['id_usuario'] = $user;
session_write_close();
$this->idUser = $data['id_usuario'];
// Valid session.
return $this;
}
}
}
return null;
}
}

View File

@ -91,11 +91,6 @@ function pandora_session_write($session_id, $data)
{ {
$session_id = addslashes($session_id); $session_id = addslashes($session_id);
// If it's an api call, the session must not be created.
if (get_parameter('op', false) && get_parameter('op2', false)) {
return true;
}
if (is_ajax()) { if (is_ajax()) {
// Avoid session upadte while processing ajax responses - notifications. // Avoid session upadte while processing ajax responses - notifications.
if (get_parameter('check_new_notifications', false)) { if (get_parameter('check_new_notifications', false)) {

View File

@ -261,6 +261,7 @@ div.login_button_saml input:hover {
.login_back input { .login_back input {
background-image: url("../../images/back_login.png"); background-image: url("../../images/back_login.png");
background-position: left 5% center; background-position: left 5% center;
background-repeat: no-repeat;
} }
.login_back input:hover { .login_back input:hover {

View File

@ -0,0 +1,10 @@
/*
* Wux style
*/
.wux_execution_result_transaction {
width: auto;
height: auto;
float: right;
margin-right: 200px;
}

View File

@ -1,5 +1,7 @@
var system = require("system"); var system = require("system");
/* global phantom */
if (system.args.length < 3 || system.args.length > 11) { if (system.args.length < 3 || system.args.length > 11) {
phantom.exit(1); phantom.exit(1);
} }
@ -14,6 +16,7 @@ var viewport_width = system.args[7];
var viewport_height = system.args[8]; var viewport_height = system.args[8];
var session_id = system.args[9]; var session_id = system.args[9];
var base_64 = system.args[10]; var base_64 = system.args[10];
var post_data = "";
if (!viewport_width) { if (!viewport_width) {
viewport_width = 750; viewport_width = 750;
@ -64,7 +67,7 @@ page.onError = function(msg) {
phantom.exit(); phantom.exit();
}; };
page.onCallback = function(st) { page.onCallback = function() {
if (!base_64) { if (!base_64) {
page.render(output_filename, { format: "png" }); page.render(output_filename, { format: "png" });
} else { } else {

View File

@ -129,7 +129,7 @@
<div style='height: 10px'> <div style='height: 10px'>
<?php <?php
$version = '7.0NG.739'; $version = '7.0NG.739';
$build = '191011'; $build = '191023';
$banner = "v$version Build $build"; $banner = "v$version Build $build";
error_reporting(0); error_reporting(0);

View File

@ -166,6 +166,19 @@ class ModuleGraph
$time_compare = 'overlapped'; $time_compare = 'overlapped';
} }
// Graph TIP view.
if (!isset($config['full_scale_option']) || $config['full_scale_option'] == 0) {
$fullscale = 0;
} else if ($config['full_scale_option'] == 1) {
$fullscale = 1;
} else if ($config['full_scale_option'] == 2) {
if ($this->graph_type == 'boolean') {
$fullscale = 1;
} else {
$fullscale = 0;
}
}
ob_start(); ob_start();
switch ($this->graph_type) { switch ($this->graph_type) {
case 'boolean': case 'boolean':
@ -188,6 +201,7 @@ class ModuleGraph
'menu' => false, 'menu' => false,
'type_graph' => $config['type_module_charts'], 'type_graph' => $config['type_module_charts'],
'vconsole' => true, 'vconsole' => true,
'fullscale' => $fullscale,
]; ];
$graph = grafico_modulo_sparse($params); $graph = grafico_modulo_sparse($params);

View File

@ -97,17 +97,6 @@ echo '<td>';
html_print_submit_button(__('Refresh path'), 'refresh', false, 'class = "sub upd" style="margin-top:0px"'); html_print_submit_button(__('Refresh path'), 'refresh', false, 'class = "sub upd" style="margin-top:0px"');
echo '</table></form>'; echo '</table></form>';
// Get the total number of Elements for the pagination
$sqlCount = sprintf(
'SELECT COUNT(*)
FROM tgis_data_history
WHERE tagente_id_agente = %d AND end_timestamp > FROM_UNIXTIME(%d)
ORDER BY end_timestamp DESC',
$agentId,
(get_system_time() - $period)
);
$countData = (int) db_get_value_sql($sqlCount);
// Get the elements to present in this page // Get the elements to present in this page
switch ($config['dbtype']) { switch ($config['dbtype']) {
case 'mysql': case 'mysql':
@ -147,33 +136,39 @@ switch ($config['dbtype']) {
$result = db_get_all_rows_sql($sql, true); $result = db_get_all_rows_sql($sql, true);
if ($result === false) { $sql2 = sprintf(
$sql2 = sprintf( '
' SELECT current_longitude AS longitude, current_latitude AS latitude, current_altitude AS altitude,
SELECT current_longitude AS longitude, current_latitude AS latitude, current_altitude AS altitude, start_timestamp, description, number_of_packages, manual_placement
start_timestamp, description, number_of_packages, manual_placement FROM tgis_data_status
FROM tgis_data_status WHERE tagente_id_agente = %d
WHERE tagente_id_agente = %d ORDER BY start_timestamp DESC
ORDER BY start_timestamp DESC LIMIT %d OFFSET %d',
LIMIT %d OFFSET %d', $agentId,
$agentId, $config['block_size'],
$config['block_size'], (int) get_parameter('offset')
(int) get_parameter('offset') );
);
$result2 = db_get_all_rows_sql($sql2, true); $result2 = db_get_all_rows_sql($sql2, true);
if ($result2 === false) { if ($result === false && $result2 === false) {
ui_print_empty_data(__('This agent doesn\'t have any GIS data.')); ui_print_empty_data(__('This agent doesn\'t have any GIS data.'));
} else {
if ($result === false) {
$result = $result2;
} else { } else {
$result2[0]['end_timestamp'] = date('Y-m-d H:i:s'); $result2[0]['end_timestamp'] = date('Y-m-d H:i:s');
$result = $result2; array_unshift($result, $result2[0]);
} }
} }
if ($result !== false) { if ($result !== false) {
echo '<h4>'.__('Positional data from the last').' '.human_time_description_raw($period).'</h4>'; echo '<h4>'.__('Positional data from the last').' '.human_time_description_raw($period).'</h4>';
// Get the total elements for UI pagination
$countData = count($result);
if ($countData > 0) { if ($countData > 0) {
ui_pagination($countData, false); ui_pagination($countData, false);
} }

View File

@ -713,11 +713,7 @@ if (is_ajax()) {
$values['options'] = json_encode($options); $values['options'] = json_encode($options);
$return_update = db_process_sql_update('tnetworkmap_enterprise', $values, ['id' => $id_ent_map]); db_process_sql_update('tnetworkmap_enterprise', $values, ['id' => $id_ent_map]);
if (!$return_update) {
$return_data['ent'] = false;
break;
}
} }
} }
} }
@ -735,11 +731,7 @@ if (is_ajax()) {
} else { } else {
$values['text_filter'] = 'migrated'; $values['text_filter'] = 'migrated';
$return_update = db_process_sql_update('tnetwork_map', $values, ['id_networkmap' => $id_open_map]); db_process_sql_update('tnetwork_map', $values, ['id_networkmap' => $id_open_map]);
if (!$return_update) {
$return_data['open'] = false;
break;
}
} }
} }
} }

View File

@ -1541,7 +1541,9 @@ if (!empty($result)) {
$row['str_warning'], $row['str_warning'],
$row['max_critical'], $row['max_critical'],
$row['min_critical'], $row['min_critical'],
$row['str_critical'] $row['str_critical'],
$row['warning_inverse'],
$row['critical_inverse']
); );
if (is_numeric($row['datos']) && !modules_is_string_type($row['module_type'])) { if (is_numeric($row['datos']) && !modules_is_string_type($row['module_type'])) {

View File

@ -280,6 +280,14 @@ if (is_ajax()) {
$events, $events,
function ($carry, $item) { function ($carry, $item) {
$tmp = (object) $item; $tmp = (object) $item;
$tmp->meta = is_metaconsole();
if (is_metaconsole()) {
if ($tmp->server_name !== null) {
$tmp->data_server = metaconsole_get_servers($tmp->server_id);
$tmp->server_url_hash = metaconsole_get_servers_url_hash($tmp->data_server);
}
}
$tmp->evento = str_replace('"', '', io_safe_output($tmp->evento)); $tmp->evento = str_replace('"', '', io_safe_output($tmp->evento));
if (strlen($tmp->evento) >= 255) { if (strlen($tmp->evento) >= 255) {
$tmp->evento = ui_print_truncate_text($tmp->evento, 255, $tmp->evento, true, false); $tmp->evento = ui_print_truncate_text($tmp->evento, 255, $tmp->evento, true, false);
@ -289,6 +297,10 @@ if (is_ajax()) {
$tmp->module_name = io_safe_output($tmp->module_name); $tmp->module_name = io_safe_output($tmp->module_name);
} }
if ($tmp->comments) {
$tmp->comments = ui_print_comments($tmp->comments);
}
$tmp->agent_name = io_safe_output($tmp->agent_name); $tmp->agent_name = io_safe_output($tmp->agent_name);
$tmp->ack_utimestamp = ui_print_timestamp( $tmp->ack_utimestamp = ui_print_timestamp(
$tmp->ack_utimestamp, $tmp->ack_utimestamp,
@ -1594,6 +1606,28 @@ function process_datatables_callback(table, settings) {
function process_datatables_item(item) { function process_datatables_item(item) {
// Url to go to node from meta.
var server_url = '';
var hashdata = '';
if(item.meta === true){
if(typeof item.data_server !== 'undefined' && typeof item.server_url_hash !== 'undefined'){
server_url = item.data_server.server_url;
hashdata = item.server_url_hash;
}
}
// Show comments events.
item.user_comment = item.comments
if(item.comments.length > 80){
item.user_comment += '&nbsp;&nbsp;<a id="show_comments" href="javascript:" onclick="show_event_dialog(\'';
item.user_comment += item.b64+"','comments'," + $("#group_rep").val()+');">';
item.user_comment += '<?php echo html_print_image('images/eye.png', true, ['title' => __('Show more')]); ?></a>';
}
// Grouped events. // Grouped events.
if(item.max_id_evento) { if(item.max_id_evento) {
item.id_evento = item.max_id_evento item.id_evento = item.max_id_evento
@ -1828,9 +1862,19 @@ function process_datatables_item(item) {
/* Update column content now to avoid json poisoning. */ /* Update column content now to avoid json poisoning. */
// Url to agent view.
var url_link = '<?php echo ui_get_full_url('index.php?sec=estado&sec2=operation/agentes/ver_agente&id_agente='); ?>';
var url_link_hash = '';
if(item.meta === true){
url_link = server_url+'/index.php?sec=estado&sec2=operation/agentes/ver_agente&id_agente=';
url_link_hash = hashdata;
}
/* Agent name link */ /* Agent name link */
if (item.id_agente > 0) { if (item.id_agente > 0) {
item.agent_name = '<a href="<?php echo ui_get_full_url('index.php?sec=estado&sec2=operation/agentes/ver_agente&id_agente='); ?>' +item.id_agente+'">' + item.agent_name + '</a>'; item.agent_name = '<a href="'+url_link+item.id_agente+url_link_hash+'">' + item.agent_name + '</a>';
} else { } else {
item.agent_name = ''; item.agent_name = '';
} }
@ -1840,11 +1884,11 @@ function process_datatables_item(item) {
<?php <?php
if (in_array('agent_name', $fields)) { if (in_array('agent_name', $fields)) {
?> ?>
item.id_agente = '<a href="<?php echo ui_get_full_url('index.php?sec=estado&sec2=operation/agentes/ver_agente&id_agente='); ?>'+item.id_agente+'">' + item.id_agente + '</a>'; item.id_agente = '<a href="'+url_link+item.id_agente+url_link_hash+'">' + item.id_agente + '</a>';
<?php <?php
} else { } else {
?> ?>
item.id_agente = '<a href="<?php echo ui_get_full_url('index.php?sec=estado&sec2=operation/agentes/ver_agente&id_agente='); ?>'+item.id_agente+'">' + item.agent_name + '</a>'; item.id_agente = '<a href="'+url_link+item.id_agente+url_link_hash+'">' + item.agent_name + '</a>';
<?php <?php
} }
?> ?>

View File

@ -18,6 +18,11 @@ enterprise_include_once('include/functions_policies.php');
$searchpolicies = check_acl($config['id_user'], 0, 'AW'); $searchpolicies = check_acl($config['id_user'], 0, 'AW');
if (!$searchpolicies) {
$totalPolicies = 0;
return;
}
$selectpolicieIDUp = ''; $selectpolicieIDUp = '';
$selectpolicieIDDown = ''; $selectpolicieIDDown = '';
$selectNameUp = ''; $selectNameUp = '';
@ -169,7 +174,7 @@ switch ($sortField) {
break; break;
} }
if ($searchpolicies == 0) { if ($searchpolicies) {
/* /*
We take the user groups to get policies that meet the requirements of the search We take the user groups to get policies that meet the requirements of the search
and which the user have permission on this groups and which the user have permission on this groups
@ -189,6 +194,7 @@ if ($searchpolicies == 0) {
$policies = db_process_sql($sql); $policies = db_process_sql($sql);
if ($policies !== false) { if ($policies !== false) {
$totalPolicies = count($policies); $totalPolicies = count($policies);

View File

@ -18,7 +18,7 @@ require_once $config['homedir'].'/include/functions_reporting.php';
enterprise_include('operation/reporting/custom_reporting.php'); enterprise_include('operation/reporting/custom_reporting.php');
$searchAgents = $searchAlerts = $searchModules = check_acl($config['id_user'], 0, 'AR'); $searchAgents = $searchAlerts = $searchModules = check_acl($config['id_user'], 0, 'AR');
$searchUsers = $searchPolicies = check_acl($config['id_user'], 0, 'AW'); $searchUsers = $searchPolicies = check_acl($config['id_user'], 0, 'AR');
$searchMaps = $searchReports = $searchGraphs = check_acl($config['id_user'], 0, 'IR'); $searchMaps = $searchReports = $searchGraphs = check_acl($config['id_user'], 0, 'IR');
$searchMain = true; $searchMain = true;
$searchHelps = true; $searchHelps = true;

View File

@ -18,6 +18,10 @@ require_once $config['homedir'].'/include/functions_users.php';
require_once $config['homedir'].'/include/functions_groups.php'; require_once $config['homedir'].'/include/functions_groups.php';
$searchUsers = check_acl($config['id_user'], 0, 'UM'); $searchUsers = check_acl($config['id_user'], 0, 'UM');
if (!$searchUsers) {
$totalUsers = 0;
return;
}
$selectUserIDUp = ''; $selectUserIDUp = '';
$selectUserIDDown = ''; $selectUserIDDown = '';

View File

@ -91,7 +91,7 @@ if (!$users || !$searchUsers) {
} }
echo '<br />'; echo '<br />';
ui_pagination($totalUsers); // ui_pagination($totalUsers);
html_print_table($table); html_print_table($table);
unset($table); unset($table);
ui_pagination($totalUsers); ui_pagination($totalUsers);

View File

@ -462,6 +462,8 @@ $autorefresh_list_out['operation/agentes/status_monitor'] = 'Monitor detail';
$autorefresh_list_out['enterprise/operation/services/services'] = 'Services'; $autorefresh_list_out['enterprise/operation/services/services'] = 'Services';
$autorefresh_list_out['enterprise/dashboard/main_dashboard'] = 'Dashboard'; $autorefresh_list_out['enterprise/dashboard/main_dashboard'] = 'Dashboard';
$autorefresh_list_out['operation/reporting/graph_viewer'] = 'Graph Viewer'; $autorefresh_list_out['operation/reporting/graph_viewer'] = 'Graph Viewer';
$autorefresh_list_out['operation/gis_maps/render_view'] = 'Gis Map';
$autorefresh_list_out['operation/snmpconsole/snmp_view'] = 'SNMP console'; $autorefresh_list_out['operation/snmpconsole/snmp_view'] = 'SNMP console';
$autorefresh_list_out['operation/agentes/pandora_networkmap'] = 'Network map'; $autorefresh_list_out['operation/agentes/pandora_networkmap'] = 'Network map';
$autorefresh_list_out['operation/visual_console/render_view'] = 'Visual console'; $autorefresh_list_out['operation/visual_console/render_view'] = 'Visual console';
@ -1150,7 +1152,7 @@ function ehorus_connection_test(host, port) {
var user = $('input#text-ehorus_user_level_user').val(); var user = $('input#text-ehorus_user_level_user').val();
var pass = $('input#password-ehorus_user_level_pass').val(); var pass = $('input#password-ehorus_user_level_pass').val();
debugger;
var badRequestMessage = '<?php echo __('Empty user or password'); ?>'; var badRequestMessage = '<?php echo __('Empty user or password'); ?>';
var notFoundMessage = '<?php echo __('User not found'); ?>'; var notFoundMessage = '<?php echo __('User not found'); ?>';
var invalidPassMessage = '<?php echo __('Invalid password'); ?>'; var invalidPassMessage = '<?php echo __('Invalid password'); ?>';

View File

@ -3,7 +3,7 @@
# #
%define name pandorafms_console %define name pandorafms_console
%define version 7.0NG.739 %define version 7.0NG.739
%define release 191011 %define release 191023
# 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.739 %define version 7.0NG.739
%define release 191011 %define release 191023
# 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.739 %define version 7.0NG.739
%define release 191011 %define release 191023
%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

@ -1,5 +1,5 @@
package: pandorafms-server package: pandorafms-server
Version: 7.0NG.739-191011 Version: 7.0NG.739-191023
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.739-191011" pandora_version="7.0NG.739-191023"
package_cpan=0 package_cpan=0
package_pandora=1 package_pandora=1

View File

@ -45,7 +45,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.739"; my $pandora_version = "7.0NG.739";
my $pandora_build = "191011"; my $pandora_build = "191023";
our $VERSION = $pandora_version." ".$pandora_build; our $VERSION = $pandora_version." ".$pandora_build;
# Setup hash # Setup hash

View File

@ -1141,21 +1141,21 @@ sub pandora_execute_action ($$$$$$$$$;$) {
#logger($pa_config, "Clean name ".$clean_name, 10); #logger($pa_config, "Clean name ".$clean_name, 10);
# User defined alert # User defined alert
if ($action->{'internal'} == 0) { if ($action->{'internal'} == 0) {
$macros{_field1_} = subst_alert_macros ($field1, \%macros, $pa_config, $dbh, $agent, $module); $macros{_field1_} = subst_alert_macros ($field1, \%macros, $pa_config, $dbh, $agent, $module, $alert);
$macros{_field2_} = subst_alert_macros ($field2, \%macros, $pa_config, $dbh, $agent, $module); $macros{_field2_} = subst_alert_macros ($field2, \%macros, $pa_config, $dbh, $agent, $module, $alert);
$macros{_field3_} = subst_alert_macros ($field3, \%macros, $pa_config, $dbh, $agent, $module); $macros{_field3_} = subst_alert_macros ($field3, \%macros, $pa_config, $dbh, $agent, $module, $alert);
$macros{_field4_} = subst_alert_macros ($field4, \%macros, $pa_config, $dbh, $agent, $module); $macros{_field4_} = subst_alert_macros ($field4, \%macros, $pa_config, $dbh, $agent, $module, $alert);
$macros{_field5_} = subst_alert_macros ($field5, \%macros, $pa_config, $dbh, $agent, $module); $macros{_field5_} = subst_alert_macros ($field5, \%macros, $pa_config, $dbh, $agent, $module, $alert);
$macros{_field6_} = subst_alert_macros ($field6, \%macros, $pa_config, $dbh, $agent, $module); $macros{_field6_} = subst_alert_macros ($field6, \%macros, $pa_config, $dbh, $agent, $module, $alert);
$macros{_field7_} = subst_alert_macros ($field7, \%macros, $pa_config, $dbh, $agent, $module); $macros{_field7_} = subst_alert_macros ($field7, \%macros, $pa_config, $dbh, $agent, $module, $alert);
$macros{_field8_} = subst_alert_macros ($field8, \%macros, $pa_config, $dbh, $agent, $module); $macros{_field8_} = subst_alert_macros ($field8, \%macros, $pa_config, $dbh, $agent, $module, $alert);
$macros{_field9_} = subst_alert_macros ($field9, \%macros, $pa_config, $dbh, $agent, $module); $macros{_field9_} = subst_alert_macros ($field9, \%macros, $pa_config, $dbh, $agent, $module, $alert);
$macros{_field10_} = subst_alert_macros ($field10, \%macros, $pa_config, $dbh, $agent, $module); $macros{_field10_} = subst_alert_macros ($field10, \%macros, $pa_config, $dbh, $agent, $module, $alert);
$macros{_field11_} = subst_alert_macros ($field11, \%macros, $pa_config, $dbh, $agent, $module); $macros{_field11_} = subst_alert_macros ($field11, \%macros, $pa_config, $dbh, $agent, $module, $alert);
$macros{_field12_} = subst_alert_macros ($field12, \%macros, $pa_config, $dbh, $agent, $module); $macros{_field12_} = subst_alert_macros ($field12, \%macros, $pa_config, $dbh, $agent, $module, $alert);
$macros{_field13_} = subst_alert_macros ($field13, \%macros, $pa_config, $dbh, $agent, $module); $macros{_field13_} = subst_alert_macros ($field13, \%macros, $pa_config, $dbh, $agent, $module, $alert);
$macros{_field14_} = subst_alert_macros ($field14, \%macros, $pa_config, $dbh, $agent, $module); $macros{_field14_} = subst_alert_macros ($field14, \%macros, $pa_config, $dbh, $agent, $module, $alert);
$macros{_field15_} = subst_alert_macros ($field15, \%macros, $pa_config, $dbh, $agent, $module); $macros{_field15_} = subst_alert_macros ($field15, \%macros, $pa_config, $dbh, $agent, $module, $alert);
my @command_args = (); my @command_args = ();
# divide command into words based on quotes and whitespaces # divide command into words based on quotes and whitespaces
@ -1186,7 +1186,7 @@ sub pandora_execute_action ($$$$$$$$$;$) {
# Internal Audit # Internal Audit
} elsif ($clean_name eq "Internal Audit") { } elsif ($clean_name eq "Internal Audit") {
$field1 = subst_alert_macros ($field1, \%macros, $pa_config, $dbh, $agent, $module); $field1 = subst_alert_macros ($field1, \%macros, $pa_config, $dbh, $agent, $module, $alert);
pandora_audit ($pa_config, $field1, defined ($agent) ? safe_output($agent->{'alias'}) : 'N/A', 'Alert (' . safe_output($alert->{'description'}) . ')', $dbh); pandora_audit ($pa_config, $field1, defined ($agent) ? safe_output($agent->{'alias'}) : 'N/A', 'Alert (' . safe_output($alert->{'description'}) . ')', $dbh);
# Email # Email
@ -1363,12 +1363,12 @@ sub pandora_execute_action ($$$$$$$$$;$) {
# Pandora FMS Event # Pandora FMS Event
} elsif ($clean_name eq "Monitoring Event") { } elsif ($clean_name eq "Monitoring Event") {
$field1 = subst_alert_macros ($field1, \%macros, $pa_config, $dbh, $agent, $module); $field1 = subst_alert_macros ($field1, \%macros, $pa_config, $dbh, $agent, $module, $alert);
$field3 = subst_alert_macros ($field3, \%macros, $pa_config, $dbh, $agent, $module); $field3 = subst_alert_macros ($field3, \%macros, $pa_config, $dbh, $agent, $module, $alert);
$field4 = subst_alert_macros ($field4, \%macros, $pa_config, $dbh, $agent, $module); $field4 = subst_alert_macros ($field4, \%macros, $pa_config, $dbh, $agent, $module, $alert);
$field6 = subst_alert_macros ($field6, \%macros, $pa_config, $dbh, $agent, $module); $field6 = subst_alert_macros ($field6, \%macros, $pa_config, $dbh, $agent, $module, $alert);
$field7 = subst_alert_macros ($field7, \%macros, $pa_config, $dbh, $agent, $module); $field7 = subst_alert_macros ($field7, \%macros, $pa_config, $dbh, $agent, $module, $alert);
$field8 = subst_alert_macros ($field8, \%macros, $pa_config, $dbh, $agent, $module); $field8 = subst_alert_macros ($field8, \%macros, $pa_config, $dbh, $agent, $module, $alert);
# Field 1 (event text) # Field 1 (event text)
my $event_text = $field1; my $event_text = $field1;
@ -1448,13 +1448,13 @@ sub pandora_execute_action ($$$$$$$$$;$) {
my $config_api_pass = pandora_get_tconfig_token ($dbh, 'integria_api_pass', ''); my $config_api_pass = pandora_get_tconfig_token ($dbh, 'integria_api_pass', '');
my $config_integria_user = pandora_get_tconfig_token ($dbh, 'integria_user', ''); my $config_integria_user = pandora_get_tconfig_token ($dbh, 'integria_user', '');
my $config_integria_user_pass = pandora_get_tconfig_token ($dbh, 'integria_pass', ''); my $config_integria_user_pass = pandora_get_tconfig_token ($dbh, 'integria_pass', '');
$field1 = subst_alert_macros ($field1, \%macros, $pa_config, $dbh, $agent, $module); $field1 = subst_alert_macros ($field1, \%macros, $pa_config, $dbh, $agent, $module, $alert);
$field2 = subst_alert_macros ($field2, \%macros, $pa_config, $dbh, $agent, $module); $field2 = subst_alert_macros ($field2, \%macros, $pa_config, $dbh, $agent, $module, $alert);
$field3 = subst_alert_macros ($field3, \%macros, $pa_config, $dbh, $agent, $module); $field3 = subst_alert_macros ($field3, \%macros, $pa_config, $dbh, $agent, $module, $alert);
$field4 = subst_alert_macros ($field4, \%macros, $pa_config, $dbh, $agent, $module); $field4 = subst_alert_macros ($field4, \%macros, $pa_config, $dbh, $agent, $module, $alert);
$field5 = subst_alert_macros ($field5, \%macros, $pa_config, $dbh, $agent, $module); $field5 = subst_alert_macros ($field5, \%macros, $pa_config, $dbh, $agent, $module, $alert);
$field6 = subst_alert_macros ($field6, \%macros, $pa_config, $dbh, $agent, $module); $field6 = subst_alert_macros ($field6, \%macros, $pa_config, $dbh, $agent, $module, $alert);
$field7 = subst_alert_macros ($field7, \%macros, $pa_config, $dbh, $agent, $module); $field7 = subst_alert_macros ($field7, \%macros, $pa_config, $dbh, $agent, $module, $alert);
# Field 1 (Integria IMS API path) # Field 1 (Integria IMS API path)
my $api_path = $config_api_path . "/integria/include/api.php"; my $api_path = $config_api_path . "/integria/include/api.php";
@ -1513,8 +1513,7 @@ sub pandora_execute_action ($$$$$$$$$;$) {
} elsif ($clean_name eq "Generate Notification") { } elsif ($clean_name eq "Generate Notification") {
# Translate macros # Translate macros
$field3 = subst_alert_macros($field3, \%macros, $pa_config, $dbh, $agent, $module); $field3 = subst_alert_macros($field3, \%macros, $pa_config, $dbh, $agent, $module, $alert);
$field4 = subst_alert_macros($field4, \%macros, $pa_config, $dbh, $agent, $module);
# If no targets ignore notification # If no targets ignore notification
if (defined($field1) && defined($field2) && ($field1 ne "" || $field2 ne "")) { if (defined($field1) && defined($field2) && ($field1 ne "" || $field2 ne "")) {

View File

@ -230,7 +230,7 @@ sub data_consumer ($$) {
} }
# Ignore the timestamp in the XML and use the file timestamp instead # Ignore the timestamp in the XML and use the file timestamp instead
$xml_data->{'timestamp'} = strftime ("%Y-%m-%d %H:%M:%S", localtime((stat($file_name))[9])) if ($pa_config->{'use_xml_timestamp'} eq '1' || ! defined ($xml_data->{'timestamp'})); $xml_data->{'timestamp'} = strftime ("%Y-%m-%d %H:%M:%S", localtime((stat($file_name))[9])) if ($pa_config->{'use_xml_timestamp'} eq '0' || ! defined ($xml_data->{'timestamp'}));
# Double check that the file exists # Double check that the file exists
if (! -f $file_name) { if (! -f $file_name) {

View File

@ -32,7 +32,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.739"; my $pandora_version = "7.0NG.739";
my $pandora_build = "191011"; my $pandora_build = "191023";
our $VERSION = $pandora_version." ".$pandora_build; our $VERSION = $pandora_version." ".$pandora_build;
our %EXPORT_TAGS = ( 'all' => [ qw() ] ); our %EXPORT_TAGS = ( 'all' => [ qw() ] );
@ -762,7 +762,7 @@ sub transfer_xml {
my $file_path; my $file_path;
if (! (empty ($name))) { if (! (empty ($name))) {
$file_name = $name . "." . sprintf("%d",time()) . ".data"; $file_name = $name . "." . sprintf("%d",getCurrentUTimeMilis(). (rand()*10000)) . ".data";
} }
else { else {
# Inherit file name # Inherit file name

View File

@ -641,19 +641,29 @@ sub logger ($$;$) {
# Set the security level # Set the security level
my $security_level = 'info'; my $security_level = 'info';
if ($level < 2) { if ($level < 2) {
$security = 'crit'; $security_level = 'crit';
} elsif ($level < 5) { } elsif ($level < 5) {
$security = 'warn'; $security_level = 'warn';
} }
openlog('pandora_server', 'ndelay', 'daemon'); openlog('pandora_server', 'ndelay', 'daemon');
syslog($security_level, $message); syslog($security_level, $message);
closelog(); closelog();
} else { } else {
# Obtain the script that invoke this log
my $parent_caller = "";
$parent_caller = ( caller(2) )[1];
if (defined $parent_caller) {
$parent_caller = (split '/', $parent_caller)[-1];
$parent_caller =~ s/\.[^.]+$//;
$parent_caller = " ** " . $parent_caller . " **: ";
} else {
$parent_caller = " ";
}
open (FILE, ">> $file") or die "[FATAL] Could not open logfile '$file'"; open (FILE, ">> $file") or die "[FATAL] Could not open logfile '$file'";
# Get an exclusive lock on the file (LOCK_EX) # Get an exclusive lock on the file (LOCK_EX)
flock (FILE, 2); flock (FILE, 2);
print FILE strftime ("%Y-%m-%d %H:%M:%S", localtime()) . " " . (defined($pa_config->{'servername'}) ? $pa_config->{'servername'} : '') . " [V". $level ."] " . $message . "\n"; print FILE strftime ("%Y-%m-%d %H:%M:%S", localtime()) . $parent_caller . (defined($pa_config->{'servername'}) ? $pa_config->{'servername'} : '') . " [V". $level ."] " . $message . "\n";
close (FILE); close (FILE);
} }
} }

View File

@ -3,7 +3,7 @@
# #
%define name pandorafms_server %define name pandorafms_server
%define version 7.0NG.739 %define version 7.0NG.739
%define release 191011 %define release 191023
Summary: Pandora FMS Server Summary: Pandora FMS Server
Name: %{name} Name: %{name}

View File

@ -3,7 +3,7 @@
# #
%define name pandorafms_server %define name pandorafms_server
%define version 7.0NG.739 %define version 7.0NG.739
%define release 191011 %define release 191023
Summary: Pandora FMS Server Summary: Pandora FMS Server
Name: %{name} Name: %{name}

View File

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

View File

@ -34,7 +34,7 @@ use PandoraFMS::Config;
use PandoraFMS::DB; use PandoraFMS::DB;
# version: define current version # version: define current version
my $version = "7.0NG.739 PS191011"; my $version = "7.0NG.739 PS191023";
# 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.739 PS191011"; my $version = "7.0NG.739 PS191023";
# save program name for logging # save program name for logging
my $progname = basename($0); my $progname = basename($0);