Merge remote-tracking branch 'origin/develop' into ent-5165-error-pdf-report-names-generated-by-template

This commit is contained in:
Luis Calvo 2020-01-09 10:42:46 +01:00
commit 2d303635ae
97 changed files with 1559 additions and 451 deletions

View File

@ -9,6 +9,7 @@ RUN yum -y install \
epel-release \ epel-release \
unzip \ unzip \
perl \ perl \
python3 \
sed \ sed \
"perl(Sys::Syslog)" "perl(Sys::Syslog)"

View File

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

@ -55,7 +55,7 @@ my $Sem = undef;
my $ThreadSem = undef; my $ThreadSem = undef;
use constant AGENT_VERSION => '7.0NG.742'; use constant AGENT_VERSION => '7.0NG.742';
use constant AGENT_BUILD => '191218'; use constant AGENT_BUILD => '200109';
# 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;
@ -2882,7 +2882,7 @@ sub cron_valid_date {
my $utime; my $utime;
eval { eval {
local $SIG{__DIE__} = sub {}; local $SIG{__DIE__} = sub {};
$utime = timelocal(0, $min, $hour, $mday, $month, $year); $utime = strftime("%s", 0, $min, $hour, $mday, $month, $year);
}; };
if ($@) { if ($@) {
return 0; return 0;

View File

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

View File

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

View File

@ -22,6 +22,17 @@ function dbmanager_query($sql, &$error, $dbconnection)
} }
$sql = html_entity_decode($sql, ENT_QUOTES); $sql = html_entity_decode($sql, ENT_QUOTES);
// Extract the text in quotes to add html entities before query db.
$patttern = '/(?:"|\')+([^"\']*)(?:"|\')+/m';
$sql = preg_replace_callback(
$patttern,
function ($matches) {
return '"'.io_safe_input($matches[1]).'"';
},
$sql
);
if ($config['mysqli']) { if ($config['mysqli']) {
$result = mysqli_query($dbconnection, $sql); $result = mysqli_query($dbconnection, $sql);
if ($result === false) { if ($result === false) {

View File

@ -13,6 +13,8 @@
require_once 'include/functions_messages.php'; require_once 'include/functions_messages.php';
require_once 'include/functions_servers.php'; require_once 'include/functions_servers.php';
require_once 'include/functions_notifications.php'; require_once 'include/functions_notifications.php';
require_once 'include/ajax/order_interpreter.php';
ui_require_css_file('order_interpreter');
// Check permissions // Check permissions
// Global errors/warnings checking. // Global errors/warnings checking.
@ -99,7 +101,8 @@ if ($config['menu_type'] == 'classic') {
if ($acl_head_search) { if ($acl_head_search) {
// Search bar. // Search bar.
$search_bar = '<form method="get" style="display: inline;" name="quicksearch" action="">'; $search_bar = '<form autocomplete="off" method="get" style="display: inline;" name="quicksearch" action="">';
'<input autocomplete="false" name="hidden" type="text" style="display:none;">';
if (!isset($config['search_keywords'])) { if (!isset($config['search_keywords'])) {
$search_bar .= '<script type="text/javascript"> var fieldKeyWordEmpty = true; </script>'; $search_bar .= '<script type="text/javascript"> var fieldKeyWordEmpty = true; </script>';
} else { } else {
@ -110,7 +113,7 @@ if ($config['menu_type'] == 'classic') {
} }
} }
$search_bar .= '<input type="text" id="keywords" name="keywords"'; $search_bar .= '<input id="keywords" name="keywords"';
if (!isset($config['search_keywords'])) { if (!isset($config['search_keywords'])) {
$search_bar .= "value='".__('Enter keywords to search')."'"; $search_bar .= "value='".__('Enter keywords to search')."'";
} else if (strlen($config['search_keywords']) == 0) { } else if (strlen($config['search_keywords']) == 0) {
@ -119,9 +122,11 @@ if ($config['menu_type'] == 'classic') {
$search_bar .= "value='".$config['search_keywords']."'"; $search_bar .= "value='".$config['search_keywords']."'";
} }
$search_bar .= 'onfocus="javascript: if (fieldKeyWordEmpty) $(\'#keywords\').val(\'\');" $search_bar .= 'type="search" onfocus="javascript: if (fieldKeyWordEmpty) $(\'#keywords\').val(\'\');"
onkeyup="javascript: fieldKeyWordEmpty = false;" class="search_input" />'; onkeyup="showinterpreter()" class="search_input"/>';
$search_bar .= '<div id="result_order" class="result_order"></div>';
// $search_bar .= 'onClick="javascript: document.quicksearch.submit()"'; // $search_bar .= 'onClick="javascript: document.quicksearch.submit()"';
$search_bar .= "<input type='hidden' name='head_search_keywords' value='abc' />"; $search_bar .= "<input type='hidden' name='head_search_keywords' value='abc' />";
$search_bar .= '</form>'; $search_bar .= '</form>';
@ -622,7 +627,7 @@ if ($config['menu_type'] == 'classic') {
}); });
} }
// Resize event // Resize event.
window.addEventListener("resize", function() { window.addEventListener("resize", function() {
attatch_to_image(); attatch_to_image();
}); });
@ -631,6 +636,85 @@ if ($config['menu_type'] == 'classic') {
var new_chat = <?php echo (int) $_SESSION['new_chat']; ?>; var new_chat = <?php echo (int) $_SESSION['new_chat']; ?>;
function showinterpreter(){
document.onclick = function(e) {
$('#result_order').hide();
$('#keywords').addClass('search_input');
$('#keywords').removeClass('results-found');
$('#keywords').value = '';
$('#keywords').attr('placeholder','Enter keywords to search');
}
if(event.keyCode == 13 && $("#result_items li.active").length != 0 )
{
window.location = $('#result_items').find("li.active a").attr('href');
}
var code = event.key;
switch (code){
case 'ArrowDown':
if($("#result_items li.active").length!=0)
{
var storeTarget = $('#result_items').find("li.active").next();
$("#result_items li.active").removeClass("active");
storeTarget.focus().addClass("active");
}
else
{
$('#result_items').find("li:first").focus().addClass("active");
}
return;
case 'ArrowUp':
if($("#result_items li.active"))
{
var storeTarget = $('#result_items').find("li.active").prev();
$("#result_items li.active").removeClass("active");
storeTarget.focus().addClass("active");
}
else
{
$('#result_items').find("li:first").focus().addClass("active");
}
return;
case 'ArrowRight':
return;
case 'ArrowLeft':
return;
}
if( $('#keywords').val() === ''){
$('#keywords').addClass('search_input');
$('#keywords').removeClass('results-found');
$('#result_order').hide();
$('#keywords').attr('placeholder','Enter keywords to search');
}else {
$.ajax({
type: "POST",
url: "ajax.php",
dataType: "html",
data: {
page: 'include/ajax/order_interpreter',
method: 'getResult',
text: $('#keywords').val(),
},
success: function (data) {
$('#result_order').html(data);
console.log(data);
},
error: function (data) {
console.error("Fatal error in AJAX call to interpreter order", data)
}
});
$('#keywords').removeClass('search_input');
$('#keywords').addClass('results-found');
$('#result_order').show();
}
}
/** /**
* Loads modal from AJAX to add feedback. * Loads modal from AJAX to add feedback.
*/ */

View File

@ -82,12 +82,18 @@ if (!empty($page) && !empty($sec)) {
} }
$login_body_style = ''; $login_body_style = '';
$login_body_class = '';
// Overrides the default background with the defined by the user. // Overrides the default background with the defined by the user.
if (!empty($config['login_background'])) { if (!empty($config['login_background'])) {
$background_url = 'images/backgrounds/'.$config['login_background']; $background_url = 'images/backgrounds/'.$config['login_background'];
$login_body_style = "style=\"background:linear-gradient(74deg, #02020255 36%, transparent 36%), url('".$background_url."');\""; $login_body_style = "style=\"background:linear-gradient(74deg, #02020255 36%, transparent 36%), url('".$background_url."');\"";
} }
// Support for Internet Explorer and Microsoft Edge browsers
if (strpos($_SERVER['HTTP_USER_AGENT'], 'Trident') !== false || strpos($_SERVER['HTTP_USER_AGENT'], 'Edge') !== false) {
$login_body_class = "class='login_body_trident'";
}
// Get alternative custom in case of db fail. // Get alternative custom in case of db fail.
$custom_fields = [ $custom_fields = [
'custom_logo_login', 'custom_logo_login',
@ -111,7 +117,7 @@ foreach ($custom_fields as $field) {
// Get the custom icons. // Get the custom icons.
$docs_logo = ui_get_docs_logo(); $docs_logo = ui_get_docs_logo();
$support_logo = ui_get_support_logo(); $support_logo = ui_get_support_logo();
echo '<div id="login_body" '.$login_body_style.'>'; echo '<div id="login_body" '.$login_body_class.' '.$login_body_style.'>';
echo '<div id="header_login">'; echo '<div id="header_login">';
echo '<div id="list_icon_docs_support"><ul>'; echo '<div id="list_icon_docs_support"><ul>';

View File

@ -40,7 +40,7 @@ if (!empty($news)) {
// Prints news dialog template // Prints news dialog template
echo '<div id="news_dialog" title="" style="display: none;">'; echo '<div id="news_dialog" title="" style="display: none;">';
echo '<div style="position:absolute; top:30px; left: 10px; text-align: left; right:0%; height:70px; min-width:560px; width: 95%; margin: 0 auto; border: 1px solid #FFF; line-height: 19px;">'; echo '<div style="position:absolute; top:30px; left: 10px; text-align: left; right:0%; height:70px; min-width:560px; width: 95%; margin: 0 auto; line-height: 19px;">';
echo '<span style="display: block; height: 260px; overflow: auto; text-align: justify; padding: 5px 15px 4px 10px; background: #ECECEC; border-radius: 4px;" id="new_text"></span>'; echo '<span style="display: block; height: 260px; overflow: auto; text-align: justify; padding: 5px 15px 4px 10px; background: #ECECEC; border-radius: 4px;" id="new_text"></span>';
echo '<span style="font-size: 12px; display: block; margin-top: 20px;" id="new_author"></span>'; echo '<span style="font-size: 12px; display: block; margin-top: 20px;" id="new_author"></span>';
echo '<span style="font-size: 12px; display: block; font-style: italic;" id="new_timestamp"></span>'; echo '<span style="font-size: 12px; display: block; font-style: italic;" id="new_timestamp"></span>';

View File

@ -612,9 +612,8 @@ if (enterprise_installed()) {
$cascade_protection, $cascade_protection,
true true
).__('Cascade protection').'&nbsp;'; ).__('Cascade protection').'&nbsp;';
}
$table_adv_parent .= __('Module').'&nbsp;'.html_print_select( $table_adv_parent .= __('Module').'&nbsp;'.html_print_select(
$modules_values, $modules_values,
'cascade_protection_module', 'cascade_protection_module',
$cascade_protection_module, $cascade_protection_module,
@ -622,7 +621,10 @@ $table_adv_parent .= __('Module').'&nbsp;'.html_print_select(
'', '',
0, 0,
true true
).'</div></div>'; );
}
$table_adv_parent .= '</div></div>';
// Learn mode / Normal mode. // Learn mode / Normal mode.
$table_adv_module_mode = '<div class="label_select"><p class="input_label">'.__('Module definition').': </p>'; $table_adv_module_mode = '<div class="label_select"><p class="input_label">'.__('Module definition').': </p>';
@ -667,7 +669,7 @@ $table_adv_status .= html_print_checkbox_switch(
$disabled, $disabled,
true true
); );
$table_adv_status .= '<p class="input_label input_label_simple">'.__('Disabled').': '.ui_print_help_tip(__('If the remote configuration is enabled, it will also go into standby mode when disabling it.'), true).'</p>'; $table_adv_status .= '<p class="input_label input_label_simple">'.__('Disabled mode').': '.ui_print_help_tip(__('If the remote configuration is enabled, it will also go into standby mode when disabling it.'), true).'</p>';
$table_adv_status .= '</div>'; $table_adv_status .= '</div>';
// Url address. // Url address.

View File

@ -32,19 +32,6 @@ if (! check_acl($config['id_user'], 0, 'LM')) {
exit; exit;
} }
if (is_ajax()) {
$get_alert_action = (bool) get_parameter('get_alert_action');
if ($get_alert_action) {
$id = (int) get_parameter('id');
$action = alerts_get_alert_action($id);
$action['command'] = alerts_get_alert_action_alert_command($action['id']);
echo json_encode($action);
}
return;
}
$update_action = (bool) get_parameter('update_action'); $update_action = (bool) get_parameter('update_action');
$create_action = (bool) get_parameter('create_action'); $create_action = (bool) get_parameter('create_action');
$delete_action = (bool) get_parameter('delete_action'); $delete_action = (bool) get_parameter('delete_action');
@ -57,15 +44,22 @@ if (defined('METACONSOLE')) {
$sec = 'galertas'; $sec = 'galertas';
} }
if ((!$copy_action) && (!$delete_action)) { // Header.
// Header if (defined('METACONSOLE')) {
if (defined('METACONSOLE')) {
alerts_meta_print_header(); alerts_meta_print_header();
} else { } else {
ui_print_page_header(__('Alerts').' &raquo; '.__('Alert actions'), 'images/gm_alerts.png', false, 'alerts_action', true); $header_help = 'alerts_action';
}
}
if ($copy_action) {
$header_help = 'alerts_config';
}
if ($delete_action) {
$header_help = 'alerts_action';
}
ui_print_page_header(__('Alerts').' &raquo; '.__('Alert actions'), 'images/gm_alerts.png', false, $header_help, true);
}
if ($copy_action) { if ($copy_action) {
$id = get_parameter('id'); $id = get_parameter('id');
@ -83,13 +77,6 @@ if ($copy_action) {
); );
include 'general/noaccess.php'; include 'general/noaccess.php';
exit; exit;
} else {
// Header
if (defined('METACONSOLE')) {
alerts_meta_print_header();
} else {
ui_print_page_header(__('Alerts').' &raquo; '.__('Alert actions'), 'images/gm_alerts.png', false, 'alerts_config', true);
}
} }
} //end if } //end if
else { else {
@ -102,14 +89,7 @@ if ($copy_action) {
$is_in_group = in_array($al_action['id_group'], $own_groups); $is_in_group = in_array($al_action['id_group'], $own_groups);
// Then action group have to be in his own groups // Then action group have to be in his own groups
if ($is_in_group) { if (!$is_in_group) {
// Header
if (defined('METACONSOLE')) {
alerts_meta_print_header();
} else {
ui_print_page_header(__('Alerts').' &raquo; '.__('Alert actions'), 'images/gm_alerts.png', false, 'alerts_config', true);
}
} else {
db_pandora_audit( db_pandora_audit(
'ACL Violation', 'ACL Violation',
'Trying to access Alert Management' 'Trying to access Alert Management'
@ -118,13 +98,6 @@ if ($copy_action) {
exit; exit;
} }
} }
} else {
// Header
if (defined('METACONSOLE')) {
alerts_meta_print_header();
} else {
ui_print_page_header(__('Alerts').' &raquo; '.__('Alert actions'), 'images/gm_alerts.png', false, 'alerts_config', true);
}
} }
$result = alerts_clone_alert_action($id); $result = alerts_clone_alert_action($id);
@ -162,13 +135,6 @@ if ($delete_action) {
); );
include 'general/noaccess.php'; include 'general/noaccess.php';
exit; exit;
} else {
// Header
if (defined('METACONSOLE')) {
alerts_meta_print_header();
} else {
ui_print_page_header(__('Alerts').' &raquo; '.__('Alert actions'), 'images/gm_alerts.png', false, 'alert_action', true);
}
} }
// If user tries to delete an action of others groups // If user tries to delete an action of others groups
@ -182,14 +148,7 @@ if ($delete_action) {
$is_in_group = in_array($al_action['id_group'], $own_groups); $is_in_group = in_array($al_action['id_group'], $own_groups);
// Then action group have to be in his own groups // Then action group have to be in his own groups
if ($is_in_group) { if (!$is_in_group) {
// Header
if (defined('METACONSOLE')) {
alerts_meta_print_header();
} else {
ui_print_page_header(__('Alerts').' &raquo; '.__('Alert actions'), 'images/gm_alerts.png', false, 'alert_action', true);
}
} else {
db_pandora_audit( db_pandora_audit(
'ACL Violation', 'ACL Violation',
'Trying to access Alert Management' 'Trying to access Alert Management'
@ -198,9 +157,6 @@ if ($delete_action) {
exit; exit;
} }
} }
} else {
// Header
ui_print_page_header(__('Alerts').' &raquo; '.__('Alert actions'), 'images/gm_alerts.png', false, '', true);
} }
@ -285,10 +241,14 @@ foreach ($actions as $action) {
2 => 'action_buttons', 2 => 'action_buttons',
3 => 'action_buttons', 3 => 'action_buttons',
]; ];
$data[2] = '<a href="index.php?sec='.$sec.'&sec2=godmode/alerts/alert_actions&amp;copy_action=1&amp;id='.$action['id'].'&pure='.$pure.'"
onClick="if (!confirm(\''.__('Are you sure?').'\')) return false;">'.html_print_image('images/copy.png', true).'</a>'; $id_action = $action['id'];
$data[3] = '<a href="index.php?sec='.$sec.'&sec2=godmode/alerts/alert_actions&delete_action=1&id='.$action['id'].'&pure='.$pure.'" $text_confirm = __('Are you sure?');
onClick="if (!confirm(\''.__('Are you sure?').'\')) return false;">'.html_print_image('images/cross.png', true).'</a>';
$data[2] = '<a href="index.php?sec='.$sec.'&sec2=godmode/alerts/alert_actions"
onClick="copy_action('.$id_action.',\''.$text_confirm.'\');">'.html_print_image('images/copy.png', true).'</a>';
$data[3] = '<a href="index.php?sec='.$sec.'&sec2=godmode/alerts/alert_actions"
onClick="delete_action('.$id_action.',\''.$text_confirm.'\');">'.html_print_image('images/cross.png', true).'</a>';
} }
array_push($table->data, $data); array_push($table->data, $data);
@ -308,3 +268,45 @@ echo '</form>';
echo '</div>'; echo '</div>';
enterprise_hook('close_meta_frame'); enterprise_hook('close_meta_frame');
?>
<script type="text/javascript">
function copy_action(id_action, text_confirm) {
if (!confirm(text_confirm)) {
return false;
} else {
jQuery.post ("ajax.php",
{
"page" : "godmode/alerts/alert_actions",
"copy_action" : 1,
"id" : id_action
},
function (data, status) {
// No data.
},
"json"
);
}
}
function delete_action(id_action, text_confirm) {
if (!confirm(text_confirm)) {
return false;
} else {
jQuery.post ("ajax.php",
{
"page" : "godmode/alerts/alert_actions",
"delete_action" : 1,
"id" : id_action
},
function (data, status) {
// No data.
},
"json"
);
}
}
</script>

View File

@ -117,6 +117,14 @@ if ($update_agents) {
$values['quiet'] = get_parameter('quiet_select'); $values['quiet'] = get_parameter('quiet_select');
} }
if (get_parameter('safe_mode_change', -1) == 1 && get_parameter('safe_mode_module', '') != '') {
// Get the module name.
$values['safe_mode_module'] = get_parameter('safe_mode_module');
} else if (get_parameter('safe_mode_change', -1) == 0) {
// Disabled Safe Operation Mode.
$values['safe_mode_module'] = '0';
}
$fields = db_get_all_fields_in_table('tagent_custom_fields'); $fields = db_get_all_fields_in_table('tagent_custom_fields');
if ($fields === false) { if ($fields === false) {
@ -134,6 +142,20 @@ if ($update_agents) {
} }
} }
// Get the id_agente_modulo to update the 'safe_operation_mode' field.
if (isset($values['safe_mode_module']) && ($values['safe_mode_module'] != '0')) {
foreach ($id_agents as $id_agent) {
$id_module_safe[$id_agent] = db_get_value_filter(
'id_agente_modulo',
'tagente_modulo',
[
'id_agente' => $id_agent,
'nombre' => $values['safe_mode_module'],
]
);
}
}
// CONF FILE DELETION // CONF FILE DELETION
if (isset($values['delete_conf'])) { if (isset($values['delete_conf'])) {
unset($values['delete_conf']); unset($values['delete_conf']);
@ -188,6 +210,11 @@ if ($update_agents) {
} }
} }
// Get the id_agent_module for this agent to update the 'safe_operation_mode' field.
if (isset($values['safe_mode_module']) && ($values['safe_mode_module'] != '0')) {
$values['safe_mode_module'] = $id_module_safe[$id_agent];
}
$result = db_process_sql_update( $result = db_process_sql_update(
'tagente', 'tagente',
$values, $values,
@ -677,6 +704,27 @@ $table->data[6][1] = html_print_select(
true true
); );
$table->data[7][0] = __('Safe operation mode').': '.ui_print_help_tip(
__(
'This mode allow %s to disable all modules
of this agent while the selected module is on CRITICAL status',
get_product_name()
),
true
);
$table->data[7][1] .= html_print_select(
[
1 => __('Enabled'),
0 => __('Disabled'),
],
'safe_mode_change',
-1,
'',
__('No change'),
-1,
true
).'&nbsp;';
$table->data[7][1] .= __('Module').'&nbsp;'.html_print_select('', 'safe_mode_module', '', '', __('Any'), -1, true).'</div>';
ui_toggle(html_print_table($table, true), __('Advanced options')); ui_toggle(html_print_table($table, true), __('Advanced options'));
unset($table); unset($table);
@ -810,6 +858,54 @@ $(document).ready (function () {
} }
}); });
// Enable Safe Operation Mode if 'Enabled' is selected.
$("#safe_mode_module").attr("disabled", "disabled");
$("#safe_mode_change").on('change', function() {
if ($("#safe_mode_change").val() == 1) {
$("#safe_mode_module").removeAttr("disabled");
refreshSafeModules();
}
else {
$("#safe_mode_module").attr("disabled", "disabled");
$('#safe_mode_module').empty();
$("#safe_mode_module").append($("<option></option>").attr("value", 'Any').html('Any'));
}
});
// Fill modules in Safe Operation Mode.
function refreshSafeModules(){
var idAgents = Array();
jQuery.each ($("#id_agents option:selected"), function (i, val) {
idAgents.push($(val).val());
});
var params = {
"page" : "operation/agentes/ver_agente",
"get_agent_modules_json_for_multiple_agents" : 1,
"id_agent" : idAgents,
"selection_mode": "common"
};
jQuery.post ("ajax.php",
params,
function (data, status) {
$('#safe_mode_module').empty();
if($.type(data) === "object"){
jQuery.each (data, function (id, value) {
option = $("<option></option>").attr("value", value).html(value);
$("#safe_mode_module").append(option);
});
} else {
option = $("<option></option>").attr("value", 'None').html('None');
$("#safe_mode_module").append(option);
}
},
"json"
);
}
$("#form_agent").submit(function() { $("#form_agent").submit(function() {
var get_parameters_count = window.location.href.slice( var get_parameters_count = window.location.href.slice(
window.location.href.indexOf('?') + 1).split('&').length; window.location.href.indexOf('?') + 1).split('&').length;
@ -833,7 +929,7 @@ $(document).ready (function () {
$("#id_group").trigger("change"); $("#id_group").trigger("change");
}); });
$("#id_agents").change (function () { $('#id_agents').on('change', function() {
var idAgents = Array(); var idAgents = Array();
jQuery.each ($("#id_agents option:selected"), function (i, val) { jQuery.each ($("#id_agents option:selected"), function (i, val) {
idAgents.push($(val).val()); idAgents.push($(val).val());
@ -858,6 +954,10 @@ $(document).ready (function () {
); );
$("#form_agents").attr("style", ""); $("#form_agents").attr("style", "");
if($("#safe_mode_change").val() == 1) {
refreshSafeModules();
}
}); });
$("#id_group").change (function () { $("#id_group").change (function () {

View File

@ -59,52 +59,36 @@ switch ($action) {
$resultOperationDB = false; $resultOperationDB = false;
} else if (!empty($ids_serialize)) { } else if (!empty($ids_serialize)) {
$ids = explode('|', $ids_serialize); $ids = explode('|', $ids_serialize);
switch ($config['dbtype']) {
case 'mysql':
$items = db_get_all_rows_sql( $items = db_get_all_rows_sql(
' 'SELECT id_gs, `field_order`
SELECT id_gs, `field_order`
FROM tgraph_source FROM tgraph_source
WHERE id_graph = '.$id_graph.' WHERE id_graph = '.$id_graph.'
ORDER BY `field_order`' ORDER BY `field_order`'
); );
break;
}
if ($items === false) { if ($items === false) {
$items = []; $items = [];
} }
// Clean the repeated order values // Clean the repeated order values.
$order_temp = 1; $order_temp = 1;
foreach ($items as $item) { foreach ($items as $item) {
switch ($config['dbtype']) {
case 'mysql':
db_process_sql_update( db_process_sql_update(
'tgraph_source', 'tgraph_source',
['`field_order`' => $order_temp], ['`field_order`' => $order_temp],
['id_gs' => $item['id_rc']] ['id_gs' => $item['id_rc']]
); );
break;
}
$order_temp++; $order_temp++;
} }
switch ($config['dbtype']) {
case 'mysql':
$items = db_get_all_rows_sql( $items = db_get_all_rows_sql(
' 'SELECT id_gs, `field_order`
SELECT id_gs, `field_order`
FROM tgraph_source FROM tgraph_source
WHERE id_graph = '.$id_graph.' WHERE id_graph = '.$id_graph.'
ORDER BY `field_order`' ORDER BY `field_order`'
); );
break;
}
if ($items === false) { if ($items === false) {
$items = []; $items = [];
@ -116,7 +100,7 @@ switch ($action) {
$temp = []; $temp = [];
foreach ($items as $item) { foreach ($items as $item) {
// Remove the contents from the block to sort // Remove the contents from the block to sort.
if (array_search($item['id_gs'], $ids) === false) { if (array_search($item['id_gs'], $ids) === false) {
$temp[$item['field_order']] = $item['id_gs']; $temp[$item['field_order']] = $item['id_gs'];
} }
@ -150,16 +134,11 @@ switch ($action) {
foreach ($items as $order => $id) { foreach ($items as $order => $id) {
switch ($config['dbtype']) {
case 'mysql':
db_process_sql_update( db_process_sql_update(
'tgraph_source', 'tgraph_source',
['`field_order`' => ($order + 1)], ['`field_order`' => ($order + 1)],
['id_gs' => $id] ['id_gs' => $id]
); );
break;
}
} }
$resultOperationDB = true; $resultOperationDB = true;
@ -211,7 +190,7 @@ if ($editGraph) {
$weights = implode(',', $weight_array); $weights = implode(',', $weight_array);
} }
// Modules table // Modules table.
if (count($module_array) > 0) { if (count($module_array) > 0) {
echo "<table width='100%' cellpadding=4 cellpadding=4 class='databox filters'>"; echo "<table width='100%' cellpadding=4 cellpadding=4 class='databox filters'>";
echo '<tr> echo '<tr>
@ -224,7 +203,7 @@ if (count($module_array) > 0) {
<th>'.__('Sort').'</th>'; <th>'.__('Sort').'</th>';
$color = 0; $color = 0;
for ($a = 0; $a < count($module_array); $a++) { for ($a = 0; $a < count($module_array); $a++) {
// Calculate table line color // Calculate table line color.
if ($color == 1) { if ($color == 1) {
$tdcolor = 'datos'; $tdcolor = 'datos';
$color = 0; $color = 0;
@ -332,7 +311,7 @@ echo '</form>';
echo '<br>'; echo '<br>';
// Configuration form // Configuration form.
echo '<span id ="none_text" style="display: none;">'.__('None').'</span>'; echo '<span id ="none_text" style="display: none;">'.__('None').'</span>';
echo "<form method='post' action='index.php?sec=reporting&sec2=godmode/reporting/graph_builder&tab=graph_editor&add_module=1&edit_graph=1&id=".$id_graph."'>"; echo "<form method='post' action='index.php?sec=reporting&sec2=godmode/reporting/graph_builder&tab=graph_editor&add_module=1&edit_graph=1&id=".$id_graph."'>";
@ -352,7 +331,7 @@ echo "<td colspan='3'>".html_print_select_groups(
true true
).'</td>'; ).'</td>';
echo '</tr><tr>'; echo '</tr><tr>';
echo "<td style='vertical-align: top;'>".__('Agents').'</td>'; echo "<td style='vertical-align: top;'>".__('Agents').ui_print_help_tip(__('If you select several agents, only the common modules will be displayed'), true).'</td>';
echo '<td></td>'; echo '<td></td>';
echo "<td style='vertical-align: top;'>".__('Modules').'</td>'; echo "<td style='vertical-align: top;'>".__('Modules').'</td>';
echo '</tr><tr>'; echo '</tr><tr>';

View File

@ -125,6 +125,20 @@ if ($report_r && $report_w) {
get_graphs_container(id_container,hash,time); get_graphs_container(id_container,hash,time);
} }
}); });
$("div[id^=period_container_] a").on('click', function(e){
if ($("div[id^=period_container_][id$=_default]").css('display') == 'none') {
$('#refresh_custom_time').show();
$('#refresh_custom_time').on('click', function(e){
var time = $('input[id *= hidden-period_container_'+hash+']').val();
get_graphs_container(id_container,hash,time);
});
}
else if ($("div[id^=period_container_][id$=_manual]").css('display') == 'none') {
$('#refresh_custom_time').hide();
}
});
} }
}); });
} }

View File

@ -454,10 +454,10 @@ if (!$maps && !is_metaconsole()) {
4 => 'action_buttons', 4 => 'action_buttons',
]; ];
$data[3] = '<a class="copy_visualmap" href="index.php?sec=network&amp;sec2=godmode/reporting/map_builder&amp;id_layout='.$map['id'].'&amp;copy_layout=1">'.html_print_image('images/copy.png', true).'</a>'; $data[3] = '<a class="copy_visualmap" href="index.php?sec=network&amp;sec2=godmode/reporting/map_builder&amp;id_layout='.$map['id'].'&amp;copy_layout=1">'.html_print_image('images/copy.png', true).'</a>';
$data[4] = '<a class="delete_visualmap" href="index.php?sec=network&amp;sec2=godmode/reporting/map_builder&amp;id_layout='.$map['id'].'&amp;delete_layout=1">'.html_print_image('images/cross.png', true).'</a>'; $data[4] = '<a class="delete_visualmap" href="index.php?sec=network&amp;sec2=godmode/reporting/map_builder&amp;id_layout='.$map['id'].'&amp;delete_layout=1" onclick="javascript: if (!confirm(\''.__('Are you sure?').'\n'.__('Delete').': '.$map['name'].'\')) return false;">'.html_print_image('images/cross.png', true).'</a>';
} else { } else {
$data[3] = '<a class="copy_visualmap" href="index.php?sec=screen&sec2=screens/screens&action=visualmap&pure='.$pure.'&id_layout='.$map['id'].'&amp;copy_layout=1">'.html_print_image('images/copy.png', true).'</a>'; $data[3] = '<a class="copy_visualmap" href="index.php?sec=screen&sec2=screens/screens&action=visualmap&pure='.$pure.'&id_layout='.$map['id'].'&amp;copy_layout=1">'.html_print_image('images/copy.png', true).'</a>';
$data[4] = '<a class="delete_visualmap" href="index.php?sec=screen&sec2=screens/screens&action=visualmap&pure='.$pure.'&id_layout='.$map['id'].'&amp;delete_layout=1">'.html_print_image('images/cross.png', true).'</a>'; $data[4] = '<a class="delete_visualmap" href="index.php?sec=screen&sec2=screens/screens&action=visualmap&pure='.$pure.'&id_layout='.$map['id'].'&amp;delete_layout=1" onclick="javascript: if (!confirm(\''.__('Are you sure?').'\n'.__('Delete').': '.$map['name'].'\')) return false;">'.html_print_image('images/cross.png', true).'</a>';
} }
} else { } else {
$data[3] = ''; $data[3] = '';

View File

@ -905,6 +905,28 @@ $class = 'databox filters';
</td> </td>
</tr> </tr>
<?php
if ($meta) {
?>
<tr id="row_servers" style="" class="datos">
<td style="font-weight:bold;"><?php echo __('Server'); ?></td>
<td style="">
<?php
html_print_select(
$servers,
'combo_server',
$server_name,
'',
__('Local metaconsole'),
0
);
?>
</td>
</tr>
<?php
}
?>
<tr id="row_label" style="" class="datos"> <tr id="row_label" style="" class="datos">
<td style="font-weight:bold;"> <td style="font-weight:bold;">
<?php <?php
@ -1844,28 +1866,6 @@ $class = 'databox filters';
<td style="" id="max_items_example"></td> <td style="" id="max_items_example"></td>
</tr> </tr>
<?php
if ($meta) {
?>
<tr id="row_servers" style="" class="datos">
<td style="font-weight:bold;"><?php echo __('Server'); ?></td>
<td style="">
<?php
html_print_select(
$servers,
'combo_server',
$server_name,
'',
__('Local metaconsole'),
0
);
?>
</td>
</tr>
<?php
}
?>
<tr id="row_header" style="" class="datos"> <tr id="row_header" style="" class="datos">
<td style="font-weight:bold;"> <td style="font-weight:bold;">
<?php <?php
@ -3546,8 +3546,19 @@ $(document).ready (function () {
// Load selected modules by default // Load selected modules by default
$("#id_agents2").trigger('click'); $("#id_agents2").trigger('click');
$('#combo_server').change (function (){
$("#id_agents").html('');
$("#id_agents2").html('');
$("#module").html('');
$("#inventory_modules").html('');
})
$("#combo_group").change ( $("#combo_group").change (
function () { function () {
$("#id_agents").html('');
$("#id_agents2").html('');
$("#module").html('');
$("#inventory_modules").html('');
jQuery.post ("ajax.php", jQuery.post ("ajax.php",
{"page" : "operation/agentes/ver_agente", {"page" : "operation/agentes/ver_agente",
"get_agents_group_json" : 1, "get_agents_group_json" : 1,
@ -3557,9 +3568,6 @@ $(document).ready (function () {
"recursion" : $('#checkbox-recursion').is(':checked') "recursion" : $('#checkbox-recursion').is(':checked')
}, },
function (data, status) { function (data, status) {
$("#id_agents").html('');
$("#id_agents2").html('');
$("#module").html('');
jQuery.each (data, function (id, value) { jQuery.each (data, function (id, value) {
// Remove keys_prefix from the index // Remove keys_prefix from the index
id = id.substring(1); id = id.substring(1);
@ -3587,9 +3595,7 @@ $(document).ready (function () {
"recursion" : $('#checkbox-recursion').is(':checked') "recursion" : $('#checkbox-recursion').is(':checked')
}, },
function (data, status) { function (data, status) {
$("#id_agents").html('');
$("#id_agents2").html(''); $("#id_agents2").html('');
$("#module").html('');
jQuery.each (data, function (id, value) { jQuery.each (data, function (id, value) {
// Remove keys_prefix from the index // Remove keys_prefix from the index
id = id.substring(1); id = id.substring(1);
@ -5174,6 +5180,29 @@ function chooseType() {
$("#id_agents").change(event_change_id_agent_inventory); $("#id_agents").change(event_change_id_agent_inventory);
$("#id_agents").trigger('change'); $("#id_agents").trigger('change');
$("#combo_server").change(function() {
$('#hidden-date_selected').val('');
updateInventoryDates(
<?php
echo '"'.ui_get_full_url(
false,
false,
false,
false
).'"';
?>
);
updateAgents($(this).val(),
<?php
echo '"'.ui_get_full_url(
false,
false,
false,
false
).'"';
?>
);
});
$("#combo_group").change(function() { $("#combo_group").change(function() {
updateAgents($(this).val(), updateAgents($(this).val(),
<?php <?php
@ -5203,6 +5232,30 @@ function chooseType() {
$("#row_servers").show(); $("#row_servers").show();
$("#combo_server").change(function() {
$('#hidden-date_selected').val('');
updateInventoryDates(
<?php
echo '"'.ui_get_full_url(
false,
false,
false,
false
).'"';
?>
);
updateAgents($(this).val(),
<?php
echo '"'.ui_get_full_url(
false,
false,
false,
false
).'"';
?>
);
});
$("#combo_group").change(function() { $("#combo_group").change(function() {
$('#hidden-date_selected').val(''); $('#hidden-date_selected').val('');
updateInventoryDates( updateInventoryDates(

View File

@ -386,7 +386,7 @@ if ($items) {
} }
$table->head[4] = __('Time lapse'); $table->head[4] = __('Time lapse');
$table->head[5] = __('Name').' / '.__('Description'); $table->head[5] = __('Name or Description');
if (check_acl($config['id_user'], 0, 'RM')) { if (check_acl($config['id_user'], 0, 'RM')) {
$table->head[6] = '<span title="'.__('Options').'">'.__('Op.').'</span>'; $table->head[6] = '<span title="'.__('Options').'">'.__('Op.').'</span>';
if ($report_w || $report_m) { if ($report_w || $report_m) {

View File

@ -15,7 +15,7 @@ global $config;
check_login(); check_login();
// Visual console required // Visual console required.
if (empty($visualConsole)) { if (empty($visualConsole)) {
db_pandora_audit( db_pandora_audit(
'ACL Violation', 'ACL Violation',
@ -425,7 +425,7 @@ $table->data['all_one_item_per_agent'][1] .= html_print_input_hidden(
$table->rowstyle['all_4'] = 'display: none;'; $table->rowstyle['all_4'] = 'display: none;';
$table->data['all_4'][0] = __('Agents'); $table->data['all_4'][0] = __('Agents').ui_print_help_tip(__('If you select several agents, only the common modules will be displayed'), true);
$agents_list = []; $agents_list = [];
if (!is_metaconsole()) { if (!is_metaconsole()) {
@ -506,7 +506,7 @@ $table->data['all_8'][1] = html_print_select(
VISUAL_MAP_WIZARD_PARENTS_NONE, VISUAL_MAP_WIZARD_PARENTS_NONE,
true true
); );
$table->data['all_8'][2] = '<span id="parent_column_2_item_in_visual_map">'.__('Item in the map').'</span>'.'<span id="parent_column_2_relationship">'.ui_print_help_tip( $table->data['all_8'][2] = '<span id="parent_column_2_item_in_visual_map">'.__('Item in the map').'</span><span id="parent_column_2_relationship">'.ui_print_help_tip(
__('The parenting relationships in %s will be drawn on the map.', get_product_name()), __('The parenting relationships in %s will be drawn on the map.', get_product_name()),
true true
).'</span>'; ).'</span>';

View File

@ -398,7 +398,7 @@ if (($create != '') || ($view != '')) {
} }
$data[1] .= ' <a href="index.php?sec=gservers&sec2=godmode/servers/plugin&filemanager=1&id_plugin='.$form_id.'" style="vertical-align: bottom;">'; $data[1] .= ' <a href="index.php?sec=gservers&sec2=godmode/servers/plugin&filemanager=1&id_plugin='.$form_id.'" style="vertical-align: bottom;">';
$data[1] .= html_print_image('images/file.png', true); $data[1] .= html_print_image('images/file.png', true, false, false, true);
$data[1] .= '</a>'; $data[1] .= '</a>';
$table->data['plugin_command'] = $data; $table->data['plugin_command'] = $data;

View File

@ -1038,8 +1038,13 @@ $row++;
$row++; $row++;
$table_report->data[$row][0] = __('PDF font size'); $table_report->data[$row][0] = __('PDF font size (px)');
$table_report->data[$row][1] = "<input type ='number' value=".$config['font_size_item_report']." size='1' name='font_size_item_report' min='1' max='9' step='0.1'>"; $table_report->data[$row][1] = "<input type ='number' value=".$config['global_font_size_report']." name='global_font_size_report' min='1' max='50' step='1'>";
$row++;
$table_report->data[$row][0] = __('HTML font size for SLA (em)');
$table_report->data[$row][1] = "<input type ='number' value=".$config['font_size_item_report']." name='font_size_item_report' min='1' max='9' step='0.1'>";
$row++; $row++;
@ -1049,6 +1054,7 @@ $row++;
true true
); );
$table_report->data[$row][1] = html_print_input_text('graph_image_height', $config['graph_image_height'], '', 20, 20, true); $table_report->data[$row][1] = html_print_input_text('graph_image_height', $config['graph_image_height'], '', 20, 20, true);
$row++; $row++;
$interval_description = [ $interval_description = [

View File

@ -101,7 +101,7 @@
width: 15px; width: 15px;
} }
.fileupload_form ul li div { .fileupload_form ul li div {
display: block; display: block !important;
} }
.fileupload_form ul li.working span { .fileupload_form ul li.working span {
background-position: 0 -12px; background-position: 0 -12px;

Binary file not shown.

After

Width:  |  Height:  |  Size: 280 B

0
pandora_console/images/default_list.png Normal file → Executable file
View File

Before

Width:  |  Height:  |  Size: 402 B

After

Width:  |  Height:  |  Size: 402 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 485 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 268 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 178 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 354 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 389 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 872 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 145 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.1 KiB

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.1 KiB

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 KiB

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.2 KiB

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.2 KiB

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.1 KiB

After

Width:  |  Height:  |  Size: 1.8 KiB

View File

@ -171,8 +171,9 @@ if ($get_graphs) {
'', '',
false, false,
$periods, $periods,
'vertical-align: middle;' 'vertical-align: middle; margin-bottom:0;'
); );
$single_table .= html_print_image('images/refresh_mc.png', true, ['id' => 'refresh_custom_time', 'title' => 'Refresh graph', 'style' => 'cursor:pointer; vertical-align: middle; display:none;']);
$single_table .= '</td>'; $single_table .= '</td>';
$single_table .= '</tr>'; $single_table .= '</tr>';
$single_table .= '</table>'; $single_table .= '</table>';

View File

@ -0,0 +1,62 @@
<?php
/**
* Order interpreter ajax controller.
*
* @category OrderInterpreter
* @package Pandora FMS
* @subpackage New Installation Welcome Window
* @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.
global $config;
require_once $config['homedir'].'/include/class/OrderInterpreter.class.php';
if (is_ajax() === false) {
return;
}
$ajaxPage = 'include/ajax/order_interpreter';
// Control call flow.
try {
// User access and validation is being processed on class constructor.
$order_interpreter = new OrderInterpreter(true, $ajaxPage);
} catch (Exception $e) {
exit;
}
// Ajax controller.
$method = get_parameter('method', '');
if (method_exists($order_interpreter, $method) === true) {
if ($order_interpreter->ajaxMethod($method) === true) {
$order_interpreter->{$method}();
} else {
$order_interpreter->error('Unavailable method.');
}
} else {
$order_interpreter->error('Method not found. ['.$method.']');
}
// Stop any execution.
exit;

View File

@ -266,9 +266,10 @@ if ($install_package) {
[$version] [$version]
); );
$product_name = io_safe_output(get_product_name());
db_pandora_audit( db_pandora_audit(
'Update '.get_product_name(), 'Update '.$product_name,
"Update version: $version of ".get_product_name().' by '.$config['id_user'] "Update version: $version of ".$product_name.' by '.$config['id_user']
); );
$return['status'] = 'success'; $return['status'] = 'success';

View File

@ -1283,7 +1283,7 @@ switch ($action) {
[ [
'disabled' => 0, 'disabled' => 0,
'id_agente' => $elementFields['id_agent'], 'id_agente' => $elementFields['id_agent'],
'tagente_modulo.id_tipo_modulo IN' => '(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,18,17,23,3,10,33)', 'tagente_modulo.id_tipo_modulo IN' => '(17,23,3,10,33)',
] ]
); );

View File

@ -391,13 +391,6 @@ class ConsoleSupervisor
$this->checkDefaultPassword(); $this->checkDefaultPassword();
/*
* Check if there's an active subscription.
* NOTIF.NEWSLETTER.SUBSCRIPTION
*/
$this->checkNewsletterSubscription();
/* /*
* Check if there're new updates. * Check if there're new updates.
* NOTIF.UPDATEMANAGER.OPENSETUP * NOTIF.UPDATEMANAGER.OPENSETUP
@ -608,7 +601,6 @@ class ConsoleSupervisor
case 'NOTIF.MISC.DEVELOPBYPASS': case 'NOTIF.MISC.DEVELOPBYPASS':
case 'NOTIF.MISC.FONTPATH': case 'NOTIF.MISC.FONTPATH':
case 'NOTIF.SECURITY.DEFAULT_PASSWORD': case 'NOTIF.SECURITY.DEFAULT_PASSWORD':
case 'NOTIF.NEWSLETTER.SUBSCRIPTION':
case 'NOTIF.UPDATEMANAGER.OPENSETUP': case 'NOTIF.UPDATEMANAGER.OPENSETUP':
case 'NOTIF.UPDATEMANAGER.UPDATE': case 'NOTIF.UPDATEMANAGER.UPDATE':
case 'NOTIF.UPDATEMANAGER.MINOR': case 'NOTIF.UPDATEMANAGER.MINOR':
@ -2000,41 +1992,6 @@ class ConsoleSupervisor
} }
/**
* Check if instance is subscribed to newsletter.
*
* @return void
*/
public function checkNewsletterSubscription()
{
global $config;
$login = get_parameter('login', false);
// Newsletter advice.
$newsletter = db_get_value(
'middlename',
'tusuario',
'id_user',
$config['id_user']
);
if (!$config['disabled_newsletter']
&& $newsletter != 1
&& $login === false
) {
$this->notify(
[
'type' => 'NOTIF.NEWSLETTER.SUBSCRIPTION',
'title' => __('Not subscribed to the newsletter'),
'message' => __('Click <a style="font-weight:bold; text-decoration:underline" href="javascript: force_run_newsletter();"> here</a> to subscribe to the newsletter'),
'url' => 'javascript: force_run_newsletter();',
]
);
} else {
$this->cleanNotifications('NOTIF.NEWSLETTER.SUBSCRIPTION');
}
}
/** /**
* Check if user 'admin' is enabled and using default password. * Check if user 'admin' is enabled and using default password.
* *

View File

@ -1341,6 +1341,9 @@ class NetworkMap
&& $rel['child_type'] == NODE_MODULE && $rel['child_type'] == NODE_MODULE
) { ) {
// Module information available. // Module information available.
$id_parent = $rel['id_parent_source_data'];
$id_child = $rel['id_child_source_data'];
$priority = 1; $priority = 1;
$valid = 1; $valid = 1;
@ -1655,7 +1658,6 @@ class NetworkMap
$node['style']['label'] = $node['name']; $node['style']['label'] = $node['name'];
} }
$node['style']['shape'] = 'circle';
if (isset($source_data['color'])) { if (isset($source_data['color'])) {
$item['color'] = $source_data['color']; $item['color'] = $source_data['color'];
} else { } else {
@ -2957,7 +2959,7 @@ class NetworkMap
'', '',
0, 0,
true true
).'&nbsp;<span id="shape_icon_in_progress" style="display: none;">'.html_print_image('images/spinner.gif', true).'</span><span id="shape_icon_correct" style="display: none;">'.html_print_image('images/dot_green.png', true).'</span><span id="shape_icon_fail" style="display: none;">'.html_print_image('images/dot_red.png', true).'</span>'; ).'&nbsp;<span id="shape_icon_in_progress" style="display: none;">'.html_print_image('images/spinner.gif', true).'</span><span id="shape_icon_correct" style="display: none;">'.html_print_image('images/success.png', true, ['width' => '18px']).'</span><span id="shape_icon_fail" style="display: none;">'.html_print_image('images/icono-bad.png', true, ['width' => '18px']).'</span>';
$table->data['node_name'][0] = __('Name'); $table->data['node_name'][0] = __('Name');
$table->data['node_name'][1] = html_print_input_text( $table->data['node_name'][1] = html_print_input_text(
'edit_name_node', 'edit_name_node',

View File

@ -0,0 +1,453 @@
<?php
/**
* Welcome to Pandora FMS feature.
*
* @category Class
* @package Pandora FMS
* @subpackage Order Interpreter
* @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.
global $config;
require_once $config['homedir'].'/godmode/wizards/Wizard.main.php';
ui_require_css_file('order_interpreter');
/**
* Class OrderInterpreter.
*/
class OrderInterpreter extends Wizard
{
/**
* Allowed methods to be called using AJAX request.
*
* @var array
*/
public $AJAXMethods = ['getResult'];
/**
* Url of controller.
*
* @var string
*/
public $ajaxController;
/**
* Generates a JSON error.
*
* @param string $msg Error message.
*
* @return void
*/
public function error($msg)
{
echo json_encode(
['error' => $msg]
);
}
/**
* Checks if target method is available to be called using AJAX.
*
* @param string $method Target method.
*
* @return boolean True allowed, false not.
*/
public function ajaxMethod($method)
{
global $config;
// Check access.
check_login();
return in_array($method, $this->AJAXMethods);
}
/**
* Constructor.
*
* @param string $ajax_controller Controller.
*
* @return object
* @throws Exception On error.
*/
public function __construct(
$ajax_controller='include/ajax/order_interpreter'
) {
global $config;
$this->ajaxController = $ajax_controller;
$this->pages_menu = [
[
'name' => __('Tactical View'),
'icon' => ui_get_full_url(
'images/op_monitoring.menu_gray.png'
),
'url' => ui_get_full_url(
'index.php?sec=view&sec2=operation/agentes/tactical'
),
'acl' => check_acl(
$config['id_user'],
0,
'AR'
) || check_acl(
$config['id_user'],
0,
'AW'
),
],
[
'name' => __('Agent Management'),
'icon' => ui_get_full_url(
'images/gm_resources.menu_gray.png'
),
'url' => ui_get_full_url(
'index.php?sec=gagente&sec2=godmode/agentes/modificar_agente'
),
'acl' => check_acl(
$config['id_user'],
0,
'AW'
) && check_acl(
$config['id_user'],
0,
'AD'
),
],
[
'name' => __('General Setup'),
'icon' => ui_get_full_url(
'images/gm_setup.menu_gray.png'
),
'url' => ui_get_full_url(
'index.php?sec=general&sec2=godmode/setup/setup&section=general'
),
'acl' => check_acl(
$config['id_user'],
0,
'PM'
) || is_user_admin(
$config['id_user']
),
],
[
'name' => __('Manage Policies'),
'icon' => ui_get_full_url(
'images/gm_configuration.menu_gray.png'
),
'url' => ui_get_full_url(
'index.php?sec=gmodules&sec2=enterprise/godmode/policies/policies'
),
'acl' => check_acl(
$config['id_user'],
0,
'AW'
),
],
[
'name' => __('List Alerts'),
'icon' => ui_get_full_url(
'images/gm_alerts.menu_gray.png'
),
'url' => ui_get_full_url(
'index.php?sec=galertas&sec2=godmode/alerts/alert_list'
),
'acl' => check_acl(
$config['id_user'],
0,
'LW'
)
|| check_acl(
$config['id_user'],
0,
'AD'
)
|| check_acl(
$config['id_user'],
0,
'LM'
),
],
[
'name' => __('View Events'),
'icon' => ui_get_full_url(
'images/op_events.menu_gray.png'
),
'url' => ui_get_full_url(
'index.php?sec=eventos&sec2=operation/events/events'
),
'acl' => check_acl(
$config['id_user'],
0,
'ER'
) ||
check_acl(
$config['id_user'],
0,
'EW'
) ||
check_acl(
$config['id_user'],
0,
'EM'
),
],
[
'name' => __('Dashboard'),
'icon' => ui_get_full_url(
'images/op_reporting.menu_gray.png'
),
'url' => ui_get_full_url(
'index.php?sec=reporting&sec2=enterprise/dashboard/dashboards'
),
'acl' => check_acl(
$config['id_user'],
0,
'RR'
),
],
[
'name' => __('Visual Console'),
'icon' => ui_get_full_url(
'images/op_network.menu_gray.png'
),
'url' => ui_get_full_url(
'index.php?sec=network&sec2=godmode/reporting/map_builder'
),
'acl' => check_acl(
$config['id_user'],
0,
'VR'
),
],
[
'name' => __('Manage Servers'),
'icon' => ui_get_full_url(
'images/gm_servers.menu_gray.png'
),
'url' => ui_get_full_url(
'index.php?sec=gservers&sec2=godmode/servers/modificar_server'
),
'acl' => check_acl(
$config['id_user'],
0,
'AW'
),
],
[
'name' => __('Edit User'),
'icon' => ui_get_full_url(
'images/gm_users.menu_gray.png'
),
'url' => ui_get_full_url(
'index.php?sec=workspace&sec2=operation/users/user_edit'
),
'acl' => true,
],
[
'name' => __('Tree View'),
'icon' => ui_get_full_url(
'images/op_monitoring.menu_gray.png'
),
'url' => ui_get_full_url(
'index.php?sec=view&sec2=operation/tree'
),
'acl' => true,
],
[
'name' => __('Network Component'),
'icon' => ui_get_full_url(
'images/gm_configuration.menu_gray.png'
),
'url' => ui_get_full_url(
'index.php?sec=gmodules&sec2=godmode/modules/manage_network_components'
),
'acl' => check_acl(
$config['id_user'],
0,
'PM'
),
],
[
'name' => __('Task List'),
'icon' => ui_get_full_url(
'images/gm_discovery.menu.png'
),
'url' => ui_get_full_url(
'index.php?sec=discovery&sec2=godmode/servers/discovery&wiz=tasklist'
),
'acl' => check_acl(
$config['id_user'],
0,
'AR'
)
|| check_acl(
$config['id_user'],
0,
'AW'
)
|| check_acl(
$config['id_user'],
0,
'AM'
)
|| check_acl(
$config['id_user'],
0,
'RR'
)
|| check_acl(
$config['id_user'],
0,
'RW'
)
|| check_acl(
$config['id_user'],
0,
'RM'
)
|| check_acl(
$config['id_user'],
0,
'PM'
),
],
[
'name' => __('Update Manager'),
'icon' => ui_get_full_url(
'images/um_messages.menu_gray.png'
),
'url' => ui_get_full_url(
'index.php?sec=messages&sec2=godmode/update_manager/update_manager&tab=setup'
),
'acl' => check_acl(
$config['id_user'],
0,
'PM'
) && is_user_admin($config['id_user']),
],
[
'name' => __('Manage Agent Groups'),
'icon' => ui_get_full_url(
'images/gm_users.menu_gray.png'
),
'url' => ui_get_full_url(
'index.php?sec=gagente&sec2=godmode/groups/group_list&tab=groups'
),
'acl' => check_acl(
$config['id_user'],
0,
'PM'
),
],
];
}
/**
* Method to print order interpreted on header search input.
*
* @return void
*/
public function getResult()
{
global $config;
// Take value from input search.
$text = get_parameter('text', '');
$array_found = [];
$iterator = 0;
$more_results = 0;
if ($text !== '') {
echo '<div class="show_result_interpreter">';
echo '<ul id="result_items">';
foreach ($this->pages_menu as $key => $value) {
if (preg_match(
'/.*'.io_safe_output($text).'.*/i',
__('GO TO '.$value['name'])
) && $value['acl']
) {
if ($iterator <= 9) {
echo '<li class="list_found" name="'.$iterator.'" id="'.$iterator.'">';
echo '
Go to &nbsp;
<img src="'.$this->pages_menu[$key]['icon'].'">';
echo '&nbsp;
<a href="'.$this->pages_menu[$key]['url'].'">
'.$value['name'].'</a><br>';
}
$iterator ++;
if ($iterator > 10) {
$more_results ++;
}
}
}
if ($iterator > 9) {
echo '</li>';
}
echo $this->loadJS();
echo '</ul>';
if ($iterator > 10) {
echo '<div class="more_results">
+ '.$more_results.' '.__('results found').'</div>';
}
if ($iterator === 0) {
echo __('No results found');
}
echo '</div>';
}
}
/**
* Load JS content.
* function to create JS actions.
*
* @return string HTML code for javascript functionality.
*/
public function loadJS()
{
ob_start();
?>
<script type="text/javascript">
</script>
<?php
return ob_get_clean();
}
}

View File

@ -396,7 +396,11 @@ class WelcomeWindow extends Wizard
$logo_url = ENTERPRISE_DIR.'/'; $logo_url = ENTERPRISE_DIR.'/';
} }
if (empty($config['custom_logo_white_bg']) === false) {
$logo_url .= 'images/custom_logo/'.$config['custom_logo_white_bg']; $logo_url .= 'images/custom_logo/'.$config['custom_logo_white_bg'];
} else {
$logo_url .= 'images/custom_logo/pandora_logo_head_white_bg.png';
}
$inputs = [ $inputs = [
[ [

View File

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

View File

@ -3070,21 +3070,20 @@ function api_get_policy_modules($thrash1, $thrash2, $other, $thrash3)
/** /**
* Create a network module in agent. And return the id_agent_module of new module. * Create a network module in agent.
* And return the id_agent_module of new module.
* *
* @param string $id Name of agent to add the module. * @param string $id Name of agent to add the module.
* @param $thrash1 Don't use. * @param string $thrash1 Don't use.
* @param array $other it's array, $other as param is <name_module>;<disabled>;<id_module_type>; * @param array $other It's array, $other as param is <name_module>;<disabled>;<id_module_type>;
* <id_module_group>;<min_warning>;<max_warning>;<str_warning>;<min_critical>;<max_critical>;<str_critical>;<ff_threshold>; * <id_module_group>;<min_warning>;<max_warning>;<str_warning>;<min_critical>;<max_critical>;<str_critical>;<ff_threshold>;
* <history_data>;<ip_target>;<module_port>;<snmp_community>;<snmp_oid>;<module_interval>;<post_process>; * <history_data>;<ip_target>;<module_port>;<snmp_community>;<snmp_oid>;<module_interval>;<post_process>;
* <min>;<max>;<custom_id>;<description>;<disabled_types_event>;<module_macros>; * <min>;<max>;<custom_id>;<description>;<disabled_types_event>;<module_macros>;
* <each_ff>;<ff_threshold_normal>;<ff_threshold_warning>;<ff_threshold_critical>; in this order * <each_ff>;<ff_threshold_normal>;<ff_threshold_warning>;<ff_threshold_critical>; in this order
* and separator char (after text ; ) and separator (pass in param othermode as othermode=url_encode_separator_<separator>) * and separator char (after text ; ) and separator (pass in param othermode as othermode=url_encode_separator_<separator>).
* example: * @param string $thrash3 Don't use.
* * @example: api.php?op=set&op2=create_network_module&id=pepito&other=prueba|0|7|1|10|15|0|16|18|0|15|0|www.google.es|0||0|180|0|0|0|0|latency%20ping&other_mode=url_encode_separator_|*
* api.php?op=set&op2=create_network_module&id=pepito&other=prueba|0|7|1|10|15|0|16|18|0|15|0|www.google.es|0||0|180|0|0|0|0|latency%20ping&other_mode=url_encode_separator_| * @return mixed Return.
*
* @param $thrash3 Don't use
*/ */
function api_set_create_network_module($id, $thrash1, $other, $thrash3) function api_set_create_network_module($id, $thrash1, $other, $thrash3)
{ {
@ -3155,16 +3154,17 @@ function api_set_create_network_module($id, $thrash1, $other, $thrash3)
'min_ff_event_critical' => $other['data'][27], 'min_ff_event_critical' => $other['data'][27],
'critical_inverse' => $other['data'][28], 'critical_inverse' => $other['data'][28],
'warning_inverse' => $other['data'][29], 'warning_inverse' => $other['data'][29],
'ff_type' => $other['data'][30],
]; ];
if (! $values['descripcion']) { if (! $values['descripcion']) {
$values['descripcion'] = ''; $values['descripcion'] = '';
// Column 'descripcion' cannot be null // Column 'descripcion' cannot be null.
} }
if (! $values['module_macros']) { if (! $values['module_macros']) {
$values['module_macros'] = ''; $values['module_macros'] = '';
// Column 'module_macros' cannot be null // Column 'module_macros' cannot be null.
} }
if ($agent_by_alias) { if ($agent_by_alias) {
@ -3190,7 +3190,7 @@ function api_set_create_network_module($id, $thrash1, $other, $thrash3)
} }
if (is_error($idModule)) { if (is_error($idModule)) {
// TODO: Improve the error returning more info // TODO: Improve the error returning more info.
returnError('error_create_network_module', __('Error in creation network module.')); returnError('error_create_network_module', __('Error in creation network module.'));
} else { } else {
returnData('string', ['type' => 'string', 'data' => $idModule]); returnData('string', ['type' => 'string', 'data' => $idModule]);
@ -3307,6 +3307,7 @@ function api_set_update_network_module($id_module, $thrash1, $other, $thrash3)
'critical_inverse', 'critical_inverse',
'warning_inverse', 'warning_inverse',
'policy_linked', 'policy_linked',
'ff_type',
]; ];
$values = []; $values = [];
@ -3420,16 +3421,17 @@ function api_set_create_plugin_module($id, $thrash1, $other, $thrash3)
'min_ff_event_critical' => $other['data'][32], 'min_ff_event_critical' => $other['data'][32],
'critical_inverse' => $other['data'][33], 'critical_inverse' => $other['data'][33],
'warning_inverse' => $other['data'][34], 'warning_inverse' => $other['data'][34],
'ff_type' => $other['data'][35],
]; ];
if (! $values['descripcion']) { if (! $values['descripcion']) {
$values['descripcion'] = ''; $values['descripcion'] = '';
// Column 'descripcion' cannot be null // Column 'descripcion' cannot be null.
} }
if (! $values['module_macros']) { if (! $values['module_macros']) {
$values['module_macros'] = ''; $values['module_macros'] = '';
// Column 'module_macros' cannot be null // Column 'module_macros' cannot be null.
} }
if ($agent_by_alias) { if ($agent_by_alias) {
@ -3455,7 +3457,7 @@ function api_set_create_plugin_module($id, $thrash1, $other, $thrash3)
} }
if (is_error($idModule)) { if (is_error($idModule)) {
// TODO: Improve the error returning more info // TODO: Improve the error returning more info.
returnError('error_create_plugin_module', __('Error in creation plugin module.')); returnError('error_create_plugin_module', __('Error in creation plugin module.'));
} else { } else {
returnData('string', ['type' => 'string', 'data' => $idModule]); returnData('string', ['type' => 'string', 'data' => $idModule]);
@ -3562,6 +3564,7 @@ function api_set_update_plugin_module($id_module, $thrash1, $other, $thrash3)
'critical_inverse', 'critical_inverse',
'warning_inverse', 'warning_inverse',
'policy_linked', 'policy_linked',
'ff_type',
]; ];
$values = []; $values = [];
@ -3669,16 +3672,17 @@ function api_set_create_data_module($id, $thrash1, $other, $thrash3)
'ff_timeout' => $other['data'][23], 'ff_timeout' => $other['data'][23],
'critical_inverse' => $other['data'][24], 'critical_inverse' => $other['data'][24],
'warning_inverse' => $other['data'][25], 'warning_inverse' => $other['data'][25],
'ff_type' => $other['data'][26],
]; ];
if (! $values['descripcion']) { if (! $values['descripcion']) {
$values['descripcion'] = ''; $values['descripcion'] = '';
// Column 'descripcion' cannot be null // Column 'descripcion' cannot be null.
} }
if (! $values['module_macros']) { if (! $values['module_macros']) {
$values['module_macros'] = ''; $values['module_macros'] = '';
// Column 'module_macros' cannot be null // Column 'module_macros' cannot be null.
} }
if ($agent_by_alias) { if ($agent_by_alias) {
@ -3704,7 +3708,7 @@ function api_set_create_data_module($id, $thrash1, $other, $thrash3)
} }
if (is_error($idModule)) { if (is_error($idModule)) {
// TODO: Improve the error returning more info // TODO: Improve the error returning more info.
returnError('error_create_data_module', __('Error in creation data module.')); returnError('error_create_data_module', __('Error in creation data module.'));
} else { } else {
returnData('string', ['type' => 'string', 'data' => $idModule]); returnData('string', ['type' => 'string', 'data' => $idModule]);
@ -3785,7 +3789,7 @@ function api_set_create_synthetic_module($id, $agent_by_alias, $other, $thrash3)
if (! $values['descripcion']) { if (! $values['descripcion']) {
$values['descripcion'] = ''; $values['descripcion'] = '';
// Column 'descripcion' cannot be null // Column 'descripcion' cannot be null.
} }
if ($agent_by_alias) { if ($agent_by_alias) {
@ -3795,7 +3799,7 @@ function api_set_create_synthetic_module($id, $agent_by_alias, $other, $thrash3)
$idModule = modules_create_agent_module($idAgent, $name, $values, true); $idModule = modules_create_agent_module($idAgent, $name, $values, true);
if (is_error($idModule)) { if (is_error($idModule)) {
// TODO: Improve the error returning more info // TODO: Improve the error returning more info.
returnError('error_create_data_module', __('Error in creation data module.')); returnError('error_create_data_module', __('Error in creation data module.'));
} else { } else {
$synthetic_type = $other['data'][1]; $synthetic_type = $other['data'][1];
@ -4190,6 +4194,7 @@ function api_set_update_data_module($id_module, $thrash1, $other, $thrash3)
'critical_inverse', 'critical_inverse',
'warning_inverse', 'warning_inverse',
'policy_linked', 'policy_linked',
'ff_type',
]; ];
$values = []; $values = [];
@ -4277,7 +4282,7 @@ function api_set_create_snmp_module($id, $thrash1, $other, $thrash3)
$disabled_types_event[EVENTS_GOING_UNKNOWN] = (int) !$other['data'][27]; $disabled_types_event[EVENTS_GOING_UNKNOWN] = (int) !$other['data'][27];
$disabled_types_event = json_encode($disabled_types_event); $disabled_types_event = json_encode($disabled_types_event);
// SNMP version 3 // SNMP version 3.
if ($other['data'][14] == '3') { if ($other['data'][14] == '3') {
if ($other['data'][23] != 'AES' and $other['data'][23] != 'DES') { if ($other['data'][23] != 'AES' and $other['data'][23] != 'DES') {
returnError('error_create_snmp_module', __('Error in creation SNMP module. snmp3_priv_method doesn\'t exist. Set it to \'AES\' or \'DES\'. ')); returnError('error_create_snmp_module', __('Error in creation SNMP module. snmp3_priv_method doesn\'t exist. Set it to \'AES\' or \'DES\'. '));
@ -4329,6 +4334,7 @@ function api_set_create_snmp_module($id, $thrash1, $other, $thrash3)
'min_ff_event_normal' => $other['data'][31], 'min_ff_event_normal' => $other['data'][31],
'min_ff_event_warning' => $other['data'][32], 'min_ff_event_warning' => $other['data'][32],
'min_ff_event_critical' => $other['data'][33], 'min_ff_event_critical' => $other['data'][33],
'ff_type' => $other['data'][34],
]; ];
} else { } else {
$values = [ $values = [
@ -4360,12 +4366,13 @@ function api_set_create_snmp_module($id, $thrash1, $other, $thrash3)
'min_ff_event_normal' => $other['data'][25], 'min_ff_event_normal' => $other['data'][25],
'min_ff_event_warning' => $other['data'][26], 'min_ff_event_warning' => $other['data'][26],
'min_ff_event_critical' => $other['data'][27], 'min_ff_event_critical' => $other['data'][27],
'ff_type' => $other['data'][28],
]; ];
} }
if (! $values['descripcion']) { if (! $values['descripcion']) {
$values['descripcion'] = ''; $values['descripcion'] = '';
// Column 'descripcion' cannot be null // Column 'descripcion' cannot be null.
} }
if ($agent_by_alias) { if ($agent_by_alias) {
@ -4528,6 +4535,7 @@ function api_set_update_snmp_module($id_module, $thrash1, $other, $thrash3)
'min_ff_event_warning', 'min_ff_event_warning',
'min_ff_event_critical', 'min_ff_event_critical',
'policy_linked', 'policy_linked',
'ff_type',
]; ];
} else { } else {
$snmp_module_fields = [ $snmp_module_fields = [
@ -4559,6 +4567,7 @@ function api_set_update_snmp_module($id_module, $thrash1, $other, $thrash3)
'min_ff_event_warning', 'min_ff_event_warning',
'min_ff_event_critical', 'min_ff_event_critical',
'policy_linked', 'policy_linked',
'ff_type',
]; ];
} }
@ -4656,6 +4665,7 @@ function api_set_new_network_component($id, $thrash1, $other, $thrash2)
'min_ff_event_normal' => $other['data'][20], 'min_ff_event_normal' => $other['data'][20],
'min_ff_event_warning' => $other['data'][21], 'min_ff_event_warning' => $other['data'][21],
'min_ff_event_critical' => $other['data'][22], 'min_ff_event_critical' => $other['data'][22],
'ff_type' => $other['data'][23],
]; ];
$name_check = db_get_value('name', 'tnetwork_component', 'name', $id); $name_check = db_get_value('name', 'tnetwork_component', 'name', $id);
@ -4756,6 +4766,7 @@ function api_set_new_plugin_component($id, $thrash1, $other, $thrash2)
'min_ff_event_normal' => $other['data'][24], 'min_ff_event_normal' => $other['data'][24],
'min_ff_event_warning' => $other['data'][25], 'min_ff_event_warning' => $other['data'][25],
'min_ff_event_critical' => $other['data'][26], 'min_ff_event_critical' => $other['data'][26],
'ff_type' => $other['data'][27],
]; ];
$name_check = db_get_value('name', 'tnetwork_component', 'name', $id); $name_check = db_get_value('name', 'tnetwork_component', 'name', $id);
@ -4891,6 +4902,7 @@ function api_set_new_snmp_component($id, $thrash1, $other, $thrash2)
'min_ff_event_normal' => $other['data'][29], 'min_ff_event_normal' => $other['data'][29],
'min_ff_event_warning' => $other['data'][30], 'min_ff_event_warning' => $other['data'][30],
'min_ff_event_critical' => $other['data'][31], 'min_ff_event_critical' => $other['data'][31],
'ff_type' => $other['data'][32],
]; ];
} else { } else {
$values = [ $values = [
@ -4922,6 +4934,7 @@ function api_set_new_snmp_component($id, $thrash1, $other, $thrash2)
'min_ff_event_normal' => $other['data'][25], 'min_ff_event_normal' => $other['data'][25],
'min_ff_event_warning' => $other['data'][26], 'min_ff_event_warning' => $other['data'][26],
'min_ff_event_critical' => $other['data'][27], 'min_ff_event_critical' => $other['data'][27],
'ff_type' => $other['data'][28],
]; ];
} }
@ -5002,6 +5015,7 @@ function api_set_new_local_component($id, $thrash1, $other, $thrash2)
'min_ff_event_warning' => $other['data'][8], 'min_ff_event_warning' => $other['data'][8],
'min_ff_event_critical' => $other['data'][9], 'min_ff_event_critical' => $other['data'][9],
'ff_timeout' => $other['data'][10], 'ff_timeout' => $other['data'][10],
'ff_type' => $other['data'][11],
]; ];
$name_check = enterprise_hook( $name_check = enterprise_hook(
@ -6835,6 +6849,7 @@ function api_set_add_data_module_policy($id, $thrash1, $other, $thrash3)
$values['min_ff_event_warning'] = $other['data'][21]; $values['min_ff_event_warning'] = $other['data'][21];
$values['min_ff_event_critical'] = $other['data'][22]; $values['min_ff_event_critical'] = $other['data'][22];
$values['ff_timeout'] = $other['data'][23]; $values['ff_timeout'] = $other['data'][23];
$values['ff_type'] = $other['data'][24];
if ($name_module_policy !== false) { if ($name_module_policy !== false) {
if ($name_module_policy[0]['name'] == $other['data'][0]) { if ($name_module_policy[0]['name'] == $other['data'][0]) {
@ -7076,6 +7091,7 @@ function api_set_add_network_module_policy($id, $thrash1, $other, $thrash3)
$values['min_ff_event_normal'] = $other['data'][24]; $values['min_ff_event_normal'] = $other['data'][24];
$values['min_ff_event_warning'] = $other['data'][25]; $values['min_ff_event_warning'] = $other['data'][25];
$values['min_ff_event_critical'] = $other['data'][26]; $values['min_ff_event_critical'] = $other['data'][26];
$values['ff_type'] = $other['data'][27];
if ($name_module_policy !== false) { if ($name_module_policy !== false) {
if ($name_module_policy[0]['name'] == $other['data'][0]) { if ($name_module_policy[0]['name'] == $other['data'][0]) {
@ -7134,7 +7150,7 @@ function api_set_update_network_module_policy($id, $thrash1, $other, $thrash3)
return; return;
} }
// Check if the module exists // Check if the module exists.
$module_policy = enterprise_hook('policies_get_modules', [$id, ['id' => $other['data'][0]], 'id_module']); $module_policy = enterprise_hook('policies_get_modules', [$id, ['id' => $other['data'][0]], 'id_module']);
if ($module_policy === false) { if ($module_policy === false) {
@ -7241,7 +7257,7 @@ function api_set_add_plugin_module_policy($id, $thrash1, $other, $thrash3)
return; return;
} }
// Check if the module is already in the policy // Check if the module is already in the policy.
$name_module_policy = enterprise_hook('policies_get_modules', [$id, ['name' => $other['data'][0]], 'name']); $name_module_policy = enterprise_hook('policies_get_modules', [$id, ['name' => $other['data'][0]], 'name']);
if ($name_module_policy === ENTERPRISE_NOT_HOOK) { if ($name_module_policy === ENTERPRISE_NOT_HOOK) {
@ -7285,6 +7301,7 @@ function api_set_add_plugin_module_policy($id, $thrash1, $other, $thrash3)
$values['min_ff_event_normal'] = $other['data'][29]; $values['min_ff_event_normal'] = $other['data'][29];
$values['min_ff_event_warning'] = $other['data'][30]; $values['min_ff_event_warning'] = $other['data'][30];
$values['min_ff_event_critical'] = $other['data'][31]; $values['min_ff_event_critical'] = $other['data'][31];
$values['ff_type'] = $other['data'][32];
if ($name_module_policy !== false) { if ($name_module_policy !== false) {
if ($name_module_policy[0]['name'] == $other['data'][0]) { if ($name_module_policy[0]['name'] == $other['data'][0]) {
@ -7344,7 +7361,7 @@ function api_set_update_plugin_module_policy($id, $thrash1, $other, $thrash3)
return; return;
} }
// Check if the module exists // Check if the module exists.
$module_policy = enterprise_hook('policies_get_modules', [$id, ['id' => $other['data'][0]], 'id_module']); $module_policy = enterprise_hook('policies_get_modules', [$id, ['id' => $other['data'][0]], 'id_module']);
if ($module_policy === false) { if ($module_policy === false) {
@ -7449,10 +7466,10 @@ function api_set_add_module_in_conf($id_agent, $module_name, $configuration_data
$new_configuration_data = io_safe_output(urldecode($configuration_data['data'])); $new_configuration_data = io_safe_output(urldecode($configuration_data['data']));
// Check if exist a current module with the same name in the conf file // Check if exist a current module with the same name in the conf file.
$old_configuration_data = config_agents_get_module_from_conf($id_agent, io_safe_output($module_name)); $old_configuration_data = config_agents_get_module_from_conf($id_agent, io_safe_output($module_name));
// If exists a module with same name, abort // If exists a module with same name, abort.
if (!empty($old_configuration_data)) { if (!empty($old_configuration_data)) {
returnError('error_adding_module_conf', '-2'); returnError('error_adding_module_conf', '-2');
exit; exit;
@ -7571,7 +7588,7 @@ function api_set_update_module_in_conf($id_agent, $module_name, $configuration_d
$new_configuration_data = io_safe_output(urldecode($configuration_data_serialized['data'])); $new_configuration_data = io_safe_output(urldecode($configuration_data_serialized['data']));
// Get current configuration // Get current configuration.
$old_configuration_data = config_agents_get_module_from_conf($id_agent, io_safe_output($module_name)); $old_configuration_data = config_agents_get_module_from_conf($id_agent, io_safe_output($module_name));
// If not exists // If not exists
@ -7580,7 +7597,7 @@ function api_set_update_module_in_conf($id_agent, $module_name, $configuration_d
exit; exit;
} }
// If current configuration and new configuration are equal, abort // If current configuration and new configuration are equal, abort.
if ($new_configuration_data == $old_configuration_data) { if ($new_configuration_data == $old_configuration_data) {
returnData('string', ['type' => 'string', 'data' => '1']); returnData('string', ['type' => 'string', 'data' => '1']);
exit; exit;
@ -7702,6 +7719,7 @@ function api_set_add_snmp_module_policy($id, $thrash1, $other, $thrash3)
'min_ff_event_normal' => $other['data'][30], 'min_ff_event_normal' => $other['data'][30],
'min_ff_event_warning' => $other['data'][31], 'min_ff_event_warning' => $other['data'][31],
'min_ff_event_critical' => $other['data'][32], 'min_ff_event_critical' => $other['data'][32],
'ff_type' => $other['data'][33],
]; ];
} else { } else {
$values = [ $values = [
@ -7731,6 +7749,7 @@ function api_set_add_snmp_module_policy($id, $thrash1, $other, $thrash3)
'min_ff_event_normal' => $other['data'][24], 'min_ff_event_normal' => $other['data'][24],
'min_ff_event_warning' => $other['data'][25], 'min_ff_event_warning' => $other['data'][25],
'min_ff_event_critical' => $other['data'][26], 'min_ff_event_critical' => $other['data'][26],
'ff_type' => $other['data'][27],
]; ];
} }
@ -13508,7 +13527,7 @@ function api_get_module_graph($id_module, $thrash2, $other, $thrash4)
} }
$graph_seconds = (!empty($other) && isset($other['data'][0])) ? $other['data'][0] : SECONDS_1HOUR; $graph_seconds = (!empty($other) && isset($other['data'][0])) ? $other['data'][0] : SECONDS_1HOUR;
// 1 hour by default // 1 hour by default.
$graph_threshold = (!empty($other) && isset($other['data'][2]) && $other['data'][2]) ? $other['data'][2] : 0; $graph_threshold = (!empty($other) && isset($other['data'][2]) && $other['data'][2]) ? $other['data'][2] : 0;
if (is_nan($graph_seconds) || $graph_seconds <= 0) { if (is_nan($graph_seconds) || $graph_seconds <= 0) {
@ -13624,7 +13643,7 @@ function api_set_new_cluster($thrash1, $thrash2, $other, $thrash3)
]; ];
if (!isset($name)) { if (!isset($name)) {
// avoid warnings // avoid warnings.
$name = ''; $name = '';
} }
@ -13632,7 +13651,7 @@ function api_set_new_cluster($thrash1, $thrash2, $other, $thrash3)
$id_agent = agents_create_agent($values_agent['nombre'], $values_agent['id_grupo'], 300, '', $values_agent); $id_agent = agents_create_agent($values_agent['nombre'], $values_agent['id_grupo'], 300, '', $values_agent);
if ($id_agent !== false) { if ($id_agent !== false) {
// Create cluster // Create cluster.
$values_cluster = [ $values_cluster = [
'name' => $name, 'name' => $name,
'cluster_type' => $cluster_type, 'cluster_type' => $cluster_type,
@ -13644,7 +13663,7 @@ function api_set_new_cluster($thrash1, $thrash2, $other, $thrash3)
$id_cluster = db_process_sql_insert('tcluster', $values_cluster); $id_cluster = db_process_sql_insert('tcluster', $values_cluster);
if ($id_cluster === false) { if ($id_cluster === false) {
// failed to create cluster, rollback previously created agent // failed to create cluster, rollback previously created agent.
agents_delete_agent($id_agent, true); agents_delete_agent($id_agent, true);
} }
@ -13989,7 +14008,7 @@ function api_set_apply_module_template($id_template, $id_agent, $thrash3, $thras
return; return;
} }
// Take agent data // Take agent data.
$row = db_get_row('tagente', 'id_agente', $id_agent); $row = db_get_row('tagente', 'id_agente', $id_agent);
$intervalo = $row['intervalo']; $intervalo = $row['intervalo'];
@ -14023,7 +14042,7 @@ function api_set_apply_module_template($id_template, $id_agent, $thrash3, $thras
} }
foreach ($nc as $row2) { foreach ($nc as $row2) {
// Insert each module from tnetwork_component into agent // Insert each module from tnetwork_component into agent.
$values = [ $values = [
'id_agente' => $id_agent, 'id_agente' => $id_agent,
'id_tipo_modulo' => $row2['type'], 'id_tipo_modulo' => $row2['type'],
@ -14069,18 +14088,19 @@ function api_set_apply_module_template($id_template, $id_agent, $thrash3, $thras
'min_ff_event_normal' => $row2['min_ff_event_normal'], 'min_ff_event_normal' => $row2['min_ff_event_normal'],
'min_ff_event_warning' => $row2['min_ff_event_warning'], 'min_ff_event_warning' => $row2['min_ff_event_warning'],
'min_ff_event_critical' => $row2['min_ff_event_critical'], 'min_ff_event_critical' => $row2['min_ff_event_critical'],
'ff_type' => $row2['ff_type'],
]; ];
$name = $row2['name']; $name = $row2['name'];
// Put tags in array if the component has to add them later // Put tags in array if the component has to add them later.
if (!empty($row2['tags'])) { if (!empty($row2['tags'])) {
$tags = explode(',', $row2['tags']); $tags = explode(',', $row2['tags']);
} else { } else {
$tags = []; $tags = [];
} }
// Check if this module exists in the agent // Check if this module exists in the agent.
$module_name_check = db_get_value_filter('id_agente_modulo', 'tagente_modulo', ['delete_pending' => 0, 'nombre' => $name, 'id_agente' => $id_agent]); $module_name_check = db_get_value_filter('id_agente_modulo', 'tagente_modulo', ['delete_pending' => 0, 'nombre' => $name, 'id_agente' => $id_agent]);
if ($module_name_check !== false) { if ($module_name_check !== false) {

View File

@ -1286,7 +1286,11 @@ function config_update_config()
// Juanma (06/05/2014) New feature: Custom front page for reports. // Juanma (06/05/2014) New feature: Custom front page for reports.
if (!config_update_value('font_size_item_report', get_parameter('font_size_item_report', 2))) { if (!config_update_value('font_size_item_report', get_parameter('font_size_item_report', 2))) {
$error_update[] = __('Font size for items reports'); $error_update[] = __('HTML font size for SLA (em)');
}
if (!config_update_value('global_font_size_report', get_parameter('global_font_size_report', 14))) {
$error_update[] = __('PDF font size (px)');
} }
if (!config_update_value('interval_description', (string) get_parameter('interval_description', 'large'))) { if (!config_update_value('interval_description', (string) get_parameter('interval_description', 'large'))) {
@ -1407,19 +1411,35 @@ function config_update_config()
$error_update[] = __('Database password'); $error_update[] = __('Database password');
} }
if (!config_update_value('history_db_days', get_parameter('history_db_days'))) { $history_db_days = get_parameter('history_db_days');
if (!is_numeric($history_db_days)
|| $history_db_days <= 0
|| !config_update_value('history_db_days', $history_db_days)
) {
$error_update[] = __('Days'); $error_update[] = __('Days');
} }
if (!config_update_value('history_event_days', get_parameter('history_event_days'))) { $history_event_days = get_parameter('history_event_days');
if (!is_numeric($history_event_days)
|| $history_event_days <= 0
|| !config_update_value('history_event_days', $history_event_days)
) {
$error_update[] = __('Event Days'); $error_update[] = __('Event Days');
} }
if (!config_update_value('history_db_step', get_parameter('history_db_step'))) { $history_db_step = get_parameter('history_db_step');
if (!is_numeric($history_db_step)
|| $history_db_step <= 0
|| !config_update_value('history_db_step', $history_db_step)
) {
$error_update[] = __('Step'); $error_update[] = __('Step');
} }
if (!config_update_value('history_db_delay', get_parameter('history_db_delay'))) { $history_db_delay = get_parameter('history_db_delay');
if (!is_numeric($history_db_delay)
|| $history_db_delay <= 0
|| !config_update_value('history_db_delay', $history_db_delay)
) {
$error_update[] = __('Delay'); $error_update[] = __('Delay');
} }
break; break;
@ -2817,6 +2837,10 @@ function config_process_config()
config_update_value('font_size_item_report', 2); config_update_value('font_size_item_report', 2);
} }
if (!isset($config['global_font_size_report'])) {
config_update_value('global_font_size_report', 14);
}
if (!isset($config['interval_description'])) { if (!isset($config['interval_description'])) {
config_update_value('interval_description', 'large'); config_update_value('interval_description', 'large');
} }

View File

@ -4009,7 +4009,7 @@ function events_page_details($event, $server='')
$data = []; $data = [];
$data[0] = '<div style="font-weight:normal; margin-left: 20px;">'.__('Last contact').'</div>'; $data[0] = '<div style="font-weight:normal; margin-left: 20px;">'.__('Last contact').'</div>';
$data[1] = ($agent['ultimo_contacto'] == '1970-01-01 00:00:00') ? '<i>'.__('N/A').'</i>' : date_w_fixed_tz($agent['ultimo_contacto']); $data[1] = ($agent['ultimo_contacto'] == '1970-01-01 00:00:00') ? '<i>'.__('N/A').'</i>' : ui_print_timestamp($agent['ultimo_contacto'], true);
$table_details->data[] = $data; $table_details->data[] = $data;
$data = []; $data = [];

View File

@ -1446,9 +1446,20 @@ function graphic_combined_module(
$data_module_graph['agent_name'] = modules_get_agentmodule_agent_name( $data_module_graph['agent_name'] = modules_get_agentmodule_agent_name(
$agent_module_id $agent_module_id
); );
if (is_metaconsole()) {
$data_module_graph['agent_alias'] = db_get_value(
'alias',
'tagente',
'id_agente',
(int) $module_data['id_agente']
);
} else {
$data_module_graph['agent_alias'] = modules_get_agentmodule_agent_alias( $data_module_graph['agent_alias'] = modules_get_agentmodule_agent_alias(
$agent_module_id $agent_module_id
); );
}
$data_module_graph['agent_id'] = $module_data['id_agente']; $data_module_graph['agent_id'] = $module_data['id_agente'];
$data_module_graph['module_name'] = $module_data['nombre']; $data_module_graph['module_name'] = $module_data['nombre'];
$data_module_graph['id_module_type'] = $module_data['id_tipo_modulo']; $data_module_graph['id_module_type'] = $module_data['id_tipo_modulo'];

View File

@ -1183,7 +1183,7 @@ function html_print_extended_select_for_cron($hour='*', $minute='*', $mday='*',
} }
// Month days // Month days
for ($i = 0; $i < 31; $i++) { for ($i = 1; $i <= 31; $i++) {
$mdays[$i] = $i; $mdays[$i] = $i;
} }
@ -3071,9 +3071,12 @@ function html_print_autocomplete_modules(
['style' => 'background: url(images/search_module.png) no-repeat right;'] ['style' => 'background: url(images/search_module.png) no-repeat right;']
); );
html_print_input_hidden($name.'_hidden', $id_agent_module); html_print_input_hidden($name.'_hidden', $id_agent_module);
ui_print_help_tip(__('Type at least two characters to search the module.'), false);
$javascript_ajax_page = ui_get_full_url('ajax.php', false, false, false, false); if (!is_metaconsole()) {
ui_print_help_tip(__('Type at least two characters to search the module.'), false);
}
$javascript_ajax_page = ui_get_full_url('ajax.php', false, false, false);
?> ?>
<script type="text/javascript"> <script type="text/javascript">
function escapeHTML (str) function escapeHTML (str)

View File

@ -314,7 +314,7 @@ function profile_print_profile_table($id)
$tags = tags_get_all_tags(); $tags = tags_get_all_tags();
$data['tags'] = html_print_select($tags, 'assign_tags[]', '', '', __('Any'), '', true, true); $data['tags'] = html_print_select($tags, 'assign_tags[]', '', '', __('Any'), '', true, true);
$data['hierarchy'] = html_print_checkbox('no_hierarchy', 1, false, true).ui_print_help_icon('no_hierarchy', true); $data['hierarchy'] = html_print_checkbox('no_hierarchy', 1, false, true);
$data['actions'] = html_print_input_image('add', 'images/add.png', 1, '', true); $data['actions'] = html_print_input_image('add', 'images/add.png', 1, '', true);
$data['actions'] .= html_print_input_hidden('id', $id, true); $data['actions'] .= html_print_input_hidden('id', $id, true);

View File

@ -325,6 +325,17 @@ function reporting_make_reporting_data(
$content['id_agent'] $content['id_agent']
); );
// This is for metaconsole. It is an array with modules and server (id node).
if (is_array($content['id_agent_module'])) {
$modules_server_array = $content['id_agent_module'];
$modules_array = [];
foreach ($modules_server_array as $value) {
$modules_array[] = $value['module'];
}
$content['id_agent_module'] = $modules_array;
}
$modules = agents_get_modules( $modules = agents_get_modules(
$agent_value, $agent_value,
[ [
@ -1775,6 +1786,27 @@ function reporting_event_report_group(
$event_graph_by_criticity = $event_filter['event_graph_by_criticity']; $event_graph_by_criticity = $event_filter['event_graph_by_criticity'];
$event_graph_validated_vs_unvalidated = $event_filter['event_graph_validated_vs_unvalidated']; $event_graph_validated_vs_unvalidated = $event_filter['event_graph_validated_vs_unvalidated'];
if (isset($content['recursion']) && $content['recursion'] == 1 && $content['id_group'] != 0) {
$propagate = db_get_value(
'propagate',
'tgrupo',
'id_grupo',
$content['id_group']
);
if ($propagate) {
$children = groups_get_children($content['id_group']);
$_groups = [ $content['id_group'] ];
if (!empty($children)) {
foreach ($children as $child) {
$_groups[] = (int) $child['id_grupo'];
}
}
$content['id_group'] = $_groups;
}
}
$data = events_get_agent( $data = events_get_agent(
false, false,
$content['period'], $content['period'],
@ -7578,6 +7610,7 @@ function reporting_custom_graph(
$content['name'] = __('Simple graph'); $content['name'] = __('Simple graph');
} }
if ($type_report != 'automatic_graph') {
$module_source = db_get_all_rows_sql( $module_source = db_get_all_rows_sql(
'SELECT id_agent_module 'SELECT id_agent_module
FROM tgraph_source FROM tgraph_source
@ -7590,6 +7623,7 @@ function reporting_custom_graph(
$modules[$key] = $value['id_agent_module']; $modules[$key] = $value['id_agent_module'];
} }
} }
}
$agent_description = agents_get_description($id_agent); $agent_description = agents_get_description($id_agent);
$agent_group = agents_get_agent_group($id_agent); $agent_group = agents_get_agent_group($id_agent);

View File

@ -447,9 +447,9 @@ function reporting_html_SLA($table, $item, $mini, $pdf=0)
$interval_description = $config['interval_description']; $interval_description = $config['interval_description'];
if ($mini) { if ($mini) {
$font_size = '1.5'; $font_size = '1.5em';
} else { } else {
$font_size = $config['font_size_item_report']; $font_size = $config['font_size_item_report'].'em';
} }
$metaconsole_on = is_metaconsole(); $metaconsole_on = is_metaconsole();
@ -588,18 +588,18 @@ function reporting_html_SLA($table, $item, $mini, $pdf=0)
$row[] = round($sla['sla_limit'], 2).'%'; $row[] = round($sla['sla_limit'], 2).'%';
if (reporting_sla_is_not_init_from_array($sla)) { if (reporting_sla_is_not_init_from_array($sla)) {
$row[] = '<span style="font: bold '.$font_size.'em Arial, Sans-serif; color: '.COL_NOTINIT.';">'.__('N/A').'</span>'; $row[] = '<span style="font-weight: bold; font-size: '.$font_size.' !important; color: '.COL_NOTINIT.';">'.__('N/A').'</span>';
$row[] = '<span style="font: bold '.$font_size.'em Arial, Sans-serif; color: '.COL_NOTINIT.';">'.__('Not init').'</span>'; $row[] = '<span style="font-weight: bold; font-size: '.$font_size.' !important; color: '.COL_NOTINIT.';">'.__('Not init').'</span>';
} else if (reporting_sla_is_ignored_from_array($sla)) { } else if (reporting_sla_is_ignored_from_array($sla)) {
$row[] = '<span style="font: bold '.$font_size.'em Arial, Sans-serif; color: '.COL_IGNORED.';">'.__('N/A').'</span>'; $row[] = '<span style="font-weight: bold; font-size: '.$font_size.' !important; color: '.COL_IGNORED.';">'.__('N/A').'</span>';
$row[] = '<span style="font: bold '.$font_size.'em Arial, Sans-serif; color: '.COL_IGNORED.';">'.__('No data').'</span>'; $row[] = '<span style="font-weight: bold; font-size: '.$font_size.' !important; color: '.COL_IGNORED.';">'.__('No data').'</span>';
// Normal calculation. // Normal calculation.
} else if ($sla['sla_status']) { } else if ($sla['sla_status']) {
$row[] = '<span style="font: bold '.$font_size.'em Arial, Sans-serif; color: '.COL_NORMAL.';">'.sla_truncate($sla['sla_value'], $config['graph_precision']).'%</span>'; $row[] = '<span style="font-weight: bold; font-size: '.$font_size.' !important; color: '.COL_NORMAL.';">'.sla_truncate($sla['sla_value'], $config['graph_precision']).'%</span>';
$row[] = '<span style="font: bold '.$font_size.'em Arial, Sans-serif; color: '.COL_NORMAL.';">'.__('OK').'</span>'; $row[] = '<span style="font-weight: bold; font-size: '.$font_size.' !important; color: '.COL_NORMAL.';">'.__('OK').'</span>';
} else { } else {
$row[] = '<span style="font: bold '.$font_size.'em Arial, Sans-serif; color: '.COL_CRITICAL.';">'.sla_truncate($sla['sla_value'], $config['graph_precision']).'%</span>'; $row[] = '<span style="font-weight: bold; font-size: '.$font_size.' !important; color: '.COL_CRITICAL.';">'.sla_truncate($sla['sla_value'], $config['graph_precision']).'%</span>';
$row[] = '<span style="font: bold '.$font_size.'em Arial, Sans-serif; color: '.COL_CRITICAL.';">'.__('Fail').'</span>'; $row[] = '<span style="font-weight: bold; font-size: '.$font_size.' !important; color: '.COL_CRITICAL.';">'.__('Fail').'</span>';
} }
// Second table for time globals. // Second table for time globals.
@ -2310,7 +2310,6 @@ function reporting_html_network_interfaces_report($table, $item, $pdf=0)
$table_agent->head = []; $table_agent->head = [];
$table_agent->head[0] = __('Agent').' '.$agent['agent']; $table_agent->head[0] = __('Agent').' '.$agent['agent'];
$table_agent->headstyle = []; $table_agent->headstyle = [];
$table_agent->headstyle[0] = 'font-size: 16px;';
$table_agent->style[0] = 'text-align: center'; $table_agent->style[0] = 'text-align: center';
$table_agent->data['interfaces'] = ''; $table_agent->data['interfaces'] = '';
@ -2399,7 +2398,6 @@ function reporting_html_alert_report($table, $item, $pdf=0)
'', '',
true true
); );
return true;
} }
$table1->head['agent'] = __('Agent'); $table1->head['agent'] = __('Agent');
@ -2503,9 +2501,9 @@ function reporting_html_monitor_report($table, $item, $mini, $pdf=0)
global $config; global $config;
if ($mini) { if ($mini) {
$font_size = '1.5'; $font_size = '1.5em';
} else { } else {
$font_size = $config['font_size_item_report']; $font_size = $config['font_size_item_report'].'em';
} }
$table->colspan['module']['cell'] = 3; $table->colspan['module']['cell'] = 3;
@ -2516,10 +2514,10 @@ function reporting_html_monitor_report($table, $item, $mini, $pdf=0)
$table1->head = []; $table1->head = [];
$table1->data = []; $table1->data = [];
if ($item['data']['unknown'] == 1) { if ($item['data']['unknown'] == 1) {
$table1->data['data']['unknown'] = '<p style="font: bold '.$font_size.'em Arial, Sans-serif; color: '.COL_UNKNOWN.';">'; $table1->data['data']['unknown'] = '<p style="font-weight: bold; font-size: '.$font_size.' !important; color: '.COL_UNKNOWN.';">';
$table1->data['data']['unknown'] .= __('Unknown').'</p>'; $table1->data['data']['unknown'] .= __('Unknown').'</p>';
} else { } else {
$table1->data['data']['ok'] = '<p style="font: bold '.$font_size.'em Arial, Sans-serif; color: '.COL_NORMAL.';">'; $table1->data['data']['ok'] = '<p style="font-weight: bold; font-size: '.$font_size.' !important; color: '.COL_NORMAL.';">';
$table1->data['data']['ok'] .= html_print_image( $table1->data['data']['ok'] .= html_print_image(
'images/module_ok.png', 'images/module_ok.png',
true true
@ -2530,7 +2528,7 @@ function reporting_html_monitor_report($table, $item, $mini, $pdf=0)
) )
).' %</p>'; ).' %</p>';
$table1->data['data']['fail'] = '<p style="font: bold '.$font_size.'em Arial, Sans-serif; color: '.COL_CRITICAL.';">'; $table1->data['data']['fail'] = '<p style="font-weight: bold; font-size: '.$font_size.' !important; color: '.COL_CRITICAL.';">';
$table1->data['data']['fail'] .= html_print_image( $table1->data['data']['fail'] .= html_print_image(
'images/module_critical.png', 'images/module_critical.png',
true true
@ -2750,9 +2748,9 @@ function reporting_html_value(&$table, $item, $mini, $only_value=false, $check_e
global $config; global $config;
if ($mini) { if ($mini) {
$font_size = '1.5'; $font_size = '1.5em';
} else { } else {
$font_size = $config['font_size_item_report']; $font_size = $config['font_size_item_report'].'em';
} }
if (isset($item['visual_format']) && $item['visual_format'] != 0 if (isset($item['visual_format']) && $item['visual_format'] != 0
@ -2867,7 +2865,7 @@ function reporting_html_value(&$table, $item, $mini, $only_value=false, $check_e
$table->colspan['data']['cell'] = 3; $table->colspan['data']['cell'] = 3;
$table->cellstyle['data']['cell'] = 'text-align: left;'; $table->cellstyle['data']['cell'] = 'text-align: left;';
$table->data['data']['cell'] = '<p style="font: bold '.$font_size.'em Arial, Sans-serif; color: #000000;">'; $table->data['data']['cell'] = '<p style="font-weight: bold; font-size: '.$font_size.'; color: #000000;">';
if ($check_empty && empty($item['data']['value'])) { if ($check_empty && empty($item['data']['value'])) {
$table->data['data']['cell'] .= __('Unknown'); $table->data['data']['cell'] .= __('Unknown');
@ -3021,6 +3019,7 @@ function reporting_html_availability($table, $item, $pdf=0)
global $config; global $config;
$font_size = $config['font_size_item_report'].'em';
$interval_description = $config['interval_description']; $interval_description = $config['interval_description'];
if (!empty($item['data'])) { if (!empty($item['data'])) {
@ -3227,7 +3226,7 @@ function reporting_html_availability($table, $item, $pdf=0)
$table_row[] = ''; $table_row[] = '';
}; };
$table_row[] = '<span style="font-size: 1.2em; font-weight:bold;">'.sla_truncate($row['SLA'], $config['graph_precision']).'%</span>'; $table_row[] = '<span style="font-size: '.$font_size.'; font-weight:bold;">'.sla_truncate($row['SLA'], $config['graph_precision']).'%</span>';
$table_row2 = []; $table_row2 = [];
$table_row2[] = $row['agent']; $table_row2[] = $row['agent'];
@ -3323,7 +3322,7 @@ function reporting_html_availability($table, $item, $pdf=0)
$item['resume']['min'], $item['resume']['min'],
$config['graph_precision'] $config['graph_precision']
).'%', ).'%',
'avg' => '<span style="font-size: 1.2em; font-weight:bold;">'.sla_truncate($item['resume']['avg'], $config['graph_precision']).'%</span>', 'avg' => '<span style="font-size: '.$font_size.'; font-weight:bold;">'.sla_truncate($item['resume']['avg'], $config['graph_precision']).'%</span>',
]; ];
if ($item['fields']['agent_max_value'] == false) { if ($item['fields']['agent_max_value'] == false) {
$table1->head['max_text'] = ''; $table1->head['max_text'] = '';
@ -3380,6 +3379,14 @@ function reporting_html_availability_graph($table, $item, $pdf=0)
global $config; global $config;
$metaconsole_on = is_metaconsole(); $metaconsole_on = is_metaconsole();
$font_size = $config['font_size_item_report'].'em';
if ($pdf) {
$font_mini = '9px';
} else {
$font_mini = 'inherit';
}
if ($metaconsole_on !== false) { if ($metaconsole_on !== false) {
$hack_metaconsole = '../../'; $hack_metaconsole = '../../';
} else { } else {
@ -3443,8 +3450,9 @@ function reporting_html_availability_graph($table, $item, $pdf=0)
$table1->data[0][0] = $chart['agent'].'<br />'.$chart['module']; $table1->data[0][0] = $chart['agent'].'<br />'.$chart['module'];
$table1->data[0][1] = $chart['chart']; $table1->data[0][1] = $chart['chart'];
$table1->data[0][2] = "<span style = 'font: bold 2em Arial, Sans-serif; color: ".$color."'>".$sla_value.'</span>'; $table1->data[0][2] = "<span style = 'font-weight: bold; font-size: ".$font_size.'; color: '.$color."'>".$sla_value.'</span>';
$table1->data[0][3] = $checks_resume; $table1->data[0][3] = "<span style = 'font-size: ".$font_mini.";'>".$checks_resume.'</span>';
$tables_chart .= html_print_table( $tables_chart .= html_print_table(
$table1, $table1,
true true
@ -3464,8 +3472,10 @@ function reporting_html_availability_graph($table, $item, $pdf=0)
} }
$title = ''; $title = '';
$checks_resume_text = $checks_resume; $checks_resume_text = '<span style = "font-size: '.$font_mini.';">';
$sla_value_text = "<span style = 'font: bold 2em Arial, Sans-serif; color: ".$color."'>".$sla_value.'</span>'; $checks_resume_text .= $checks_resume;
$checks_resume_text .= '</span>';
$sla_value_text = "<span style = 'font-weight: bold; font-size: ".$font_size.' !important; color: '.$color."'>".$sla_value.'</span>';
switch ($item['data'][$k_chart]['failover']) { switch ($item['data'][$k_chart]['failover']) {
case 'primary': case 'primary':
$title = '<b>'.__('Primary').'</b>'; $title = '<b>'.__('Primary').'</b>';
@ -3482,8 +3492,8 @@ function reporting_html_availability_graph($table, $item, $pdf=0)
case 'result': case 'result':
default: default:
$title = '<b>'.__('Result').'</b>'; $title = '<b>'.__('Result').'</b>';
$sla_value_text = "<span style = 'font: bold 3em Arial, Sans-serif; color: ".$color."'>".$sla_value.'</span>'; $sla_value_text = "<span style = 'font-weight: bold; font-size: ".$font_size.' !important; color: '.$color."'>".$sla_value.'</span>';
$checks_resume_text = '<span style = "font-size: 12pt;">'; $checks_resume_text = '<span style = "font-size: '.$font_mini.';">';
$checks_resume_text .= $checks_resume; $checks_resume_text .= $checks_resume;
$checks_resume_text .= '</span>'; $checks_resume_text .= '</span>';
break; break;
@ -5123,19 +5133,6 @@ function reporting_html_planned_downtimes_table($planned_downtimes)
$table->style = []; $table->style = [];
$table->data = []; $table->data = [];
if ($for_pdf) {
$table->titlestyle = 'background: #373737; color: #FFF; display: table-cell; font-size: 12px; border: 1px solid grey';
$table->class = 'table_sla';
for ($i = 0; $i < count($table->head); $i++) {
$table->headstyle[$i] = 'background: #666; color: #FFF; display: table-cell; font-size: 11px; border: 1px solid grey';
}
for ($i = 0; $i < count($table->head); $i++) {
$table->style[$i] = 'display: table-cell; font-size: 10px;';
}
}
foreach ($planned_downtimes as $planned_downtime) { foreach ($planned_downtimes as $planned_downtime) {
$data = []; $data = [];
$data[0] = $planned_downtime['name']; $data[0] = $planned_downtime['name'];

View File

@ -39,6 +39,9 @@ function reporting_xml_get_report($report, $filename, $return=false)
} }
} }
// Remove entities.
$report = io_safe_output($report);
$xml = null; $xml = null;
$xml = array2XML($report, 'report', $xml); $xml = array2XML($report, 'report', $xml);
$xml = preg_replace('/(<[^>]+>)(<[^>]+>)(<[^>]+>)/', "$1\n$2\n$3", $xml); $xml = preg_replace('/(<[^>]+>)(<[^>]+>)(<[^>]+>)/', "$1\n$2\n$3", $xml);

View File

@ -47,8 +47,6 @@ function tactical_get_data($id_user=false, $user_strict=false, $acltags, $return
} }
if (!empty($user_groups_ids)) { if (!empty($user_groups_ids)) {
switch ($config['dbtype']) {
case 'mysql':
$list_groups = db_get_all_rows_sql( $list_groups = db_get_all_rows_sql(
' '
SELECT * SELECT *
@ -56,28 +54,6 @@ function tactical_get_data($id_user=false, $user_strict=false, $acltags, $return
WHERE id_grupo IN ('.$user_groups_ids.') WHERE id_grupo IN ('.$user_groups_ids.')
ORDER BY nombre COLLATE utf8_general_ci ASC' ORDER BY nombre COLLATE utf8_general_ci ASC'
); );
break;
case 'postgresql':
$list_groups = db_get_all_rows_sql(
'
SELECT *
FROM tgrupo
WHERE id_grupo IN ('.$user_groups_ids.')
ORDER BY nombre ASC'
);
break;
case 'oracle':
$list_groups = db_get_all_rows_sql(
'
SELECT *
FROM tgrupo
WHERE id_grupo IN ('.$user_groups_ids.')
ORDER BY nombre ASC'
);
break;
}
} }
$list = []; $list = [];
@ -242,14 +218,36 @@ function tactical_get_data($id_user=false, $user_strict=false, $acltags, $return
$list['_server_sanity_'] = format_numeric((100 - $list['_module_sanity_']), 1); $list['_server_sanity_'] = format_numeric((100 - $list['_module_sanity_']), 1);
} else if (($config['realtimestats'] == 0)) { } else if (($config['realtimestats'] == 0)) {
if (users_is_admin()) {
$group_stat = db_get_all_rows_sql( $group_stat = db_get_all_rows_sql(
"SELECT sprintf(
'SELECT
SUM(ta.normal_count) as normal, SUM(ta.critical_count) as critical, SUM(ta.normal_count) as normal, SUM(ta.critical_count) as critical,
SUM(ta.warning_count) as warning,SUM(ta.unknown_count) as unknown, SUM(ta.warning_count) as warning,SUM(ta.unknown_count) as unknown,
SUM(ta.notinit_count) as not_init, SUM(fired_count) as alerts_fired SUM(ta.notinit_count) as not_init, SUM(ta.fired_count) as alerts_fired
FROM tagente ta FROM tagente ta
WHERE disabled = 0 AND id_grupo IN ($user_groups_ids)" WHERE ta.disabled = 0 AND ta.id_grupo IN (%s)
',
$user_groups_ids
)
); );
} else {
$group_stat = db_get_all_rows_sql(
sprintf(
'SELECT
SUM(ta.normal_count) as normal, SUM(ta.critical_count) as critical,
SUM(ta.warning_count) as warning,SUM(ta.unknown_count) as unknown,
SUM(ta.notinit_count) as not_init, SUM(ta.fired_count) as alerts_fired
FROM tagente ta
LEFT JOIN tagent_secondary_group tasg
ON ta.id_agente = tasg.id_agent
WHERE ta.disabled = 0 AND
(ta.id_grupo IN ( %s ) OR tasg.id_group IN ( %s ))',
$user_groups_ids,
$user_groups_ids
)
);
}
$list['_agents_unknown_'] = $group_stat[0]['unknown']; $list['_agents_unknown_'] = $group_stat[0]['unknown'];
$list['_monitors_alerts_fired_'] = $group_stat[0]['alerts_fired']; $list['_monitors_alerts_fired_'] = $group_stat[0]['alerts_fired'];
@ -303,19 +301,41 @@ function tactical_get_data($id_user=false, $user_strict=false, $acltags, $return
$list['_server_sanity_'] = format_numeric((100 - $list['_module_sanity_']), 1); $list['_server_sanity_'] = format_numeric((100 - $list['_module_sanity_']), 1);
} else { } else {
$_tag_condition = ''; if (users_is_admin()) {
$result_list = db_get_all_rows_sql( $result_list = db_get_all_rows_sql(
"SELECT COUNT(*) as contado, estado sprintf(
FROM tagente_estado tae INNER JOIN tagente ta 'SELECT COUNT(*) as contado, estado FROM tagente_estado tae
INNER JOIN tagente ta
ON tae.id_agente = ta.id_agente ON tae.id_agente = ta.id_agente
AND ta.disabled = 0 AND ta.disabled = 0
AND ta.id_grupo IN ( $user_groups_ids ) AND ta.id_grupo IN ( %s )
INNER JOIN tagente_modulo tam INNER JOIN tagente_modulo tam
ON tae.id_agente_modulo = tam.id_agente_modulo ON tae.id_agente_modulo = tam.id_agente_modulo
AND tam.disabled = 0 AND tam.disabled = 0
$_tag_condition GROUP BY estado',
GROUP BY estado" $user_groups_ids
)
); );
} else {
$result_list = db_get_all_rows_sql(
sprintf(
'SELECT COUNT(*) as contado, estado
FROM tagente_estado tae
INNER JOIN tagente ta
ON tae.id_agente = ta.id_agente
AND ta.disabled = 0
INNER JOIN tagente_modulo tam
ON tae.id_agente_modulo = tam.id_agente_modulo
AND tam.disabled = 0
LEFT JOIN tagent_secondary_group tasg
ON ta.id_agente = tasg.id_agent
WHERE (ta.id_grupo IN ( %s ) OR tasg.id_group IN ( %s ))
GROUP BY estado',
$user_groups_ids,
$user_groups_ids
)
);
}
if (empty($result_list)) { if (empty($result_list)) {
$result_list = []; $result_list = [];

View File

@ -624,7 +624,7 @@ function treeview_printTable($id_agente, $server_data=[], $no_head=false)
if ($agent['ultimo_contacto_remoto'] == '01-01-1970 00:00:00') { if ($agent['ultimo_contacto_remoto'] == '01-01-1970 00:00:00') {
$last_remote_contact = __('Never'); $last_remote_contact = __('Never');
} else { } else {
$last_remote_contact = ui_print_timestamp($agent['ultimo_contacto_remoto'], true); $last_remote_contact = date_w_fixed_tz($agent['ultimo_contacto_remoto']);
} }
$row = []; $row = [];

View File

@ -776,9 +776,9 @@ function ui_print_os_icon(
} }
if (is_metaconsole()) { if (is_metaconsole()) {
$no_in_meta = true;
} else {
$no_in_meta = false; $no_in_meta = false;
} else {
$no_in_meta = true;
} }
$icon = (string) db_get_value('icon_name', 'tconfig_os', 'id_os', (int) $id_os); $icon = (string) db_get_value('icon_name', 'tconfig_os', 'id_os', (int) $id_os);
@ -1144,7 +1144,7 @@ function ui_format_alert_row(
$data[$index['agent_name']] = $disabledHtmlStart; $data[$index['agent_name']] = $disabledHtmlStart;
if ($agent == 0) { if ($agent == 0) {
$data[$index['module_name']] .= ui_print_truncate_text(isset($alert['agent_module_name']) ? $alert['agent_module_name'] : modules_get_agentmodule_name($alert['id_agent_module']), 'module_small', false, true, true, '[&hellip;]', 'font-size: 7.2pt'); $data[$index['module_name']] .= ui_print_truncate_text(isset($alert['agent_module_name']) ? $alert['agent_module_name'] : modules_get_agentmodule_name($alert['id_agent_module']), 'module_small', false, true, true, '[&hellip;]', '');
} else { } else {
if (defined('METACONSOLE')) { if (defined('METACONSOLE')) {
$agent_name = $alert['agent_name']; $agent_name = $alert['agent_name'];
@ -1155,16 +1155,16 @@ function ui_format_alert_row(
} }
if (defined('METACONSOLE') || !can_user_access_node()) { if (defined('METACONSOLE') || !can_user_access_node()) {
$data[$index['agent_name']] = ui_print_truncate_text($agent_name, 'agent_small', false, true, false, '[&hellip;]', 'font-size:7.5pt;'); $data[$index['agent_name']] = ui_print_truncate_text($agent_name, 'agent_small', false, true, true, '[&hellip;]', '');
} else { } else {
if ($agent_style !== false) { if ($agent_style !== false) {
$data[$index['agent_name']] .= '<a href="index.php?sec=estado&sec2=operation/agentes/ver_agente&id_agente='.$id_agent.'"> <span style="font-size: 7pt;font-weight:bold" title ="'.$agente['nombre'].'">'.$agente['alias'].'</span></a>'; $data[$index['agent_name']] .= '<a href="index.php?sec=estado&sec2=operation/agentes/ver_agente&id_agente='.$id_agent.'"> <span style="font-weight:bold" title ="'.$agente['nombre'].'">'.$agente['alias'].'</span></a>';
} else { } else {
$data[$index['agent_name']] .= '<a href="index.php?sec=estado&sec2=operation/agentes/ver_agente&id_agente='.$id_agent.'"> <span style="font-size: 7pt;font-weight:bold" title ="'.$agente['nombre'].'">'.$agente['alias'].'</span></a>'; $data[$index['agent_name']] .= '<a href="index.php?sec=estado&sec2=operation/agentes/ver_agente&id_agente='.$id_agent.'"> <span style="font-weight:bold" title ="'.$agente['nombre'].'">'.$agente['alias'].'</span></a>';
} }
} }
$data[$index['module_name']] = ui_print_truncate_text(isset($alert['agent_module_name']) ? $alert['agent_module_name'] : modules_get_agentmodule_name($alert['id_agent_module']), 'module_small', false, true, true, '[&hellip;]', 'font-size: 7.2pt'); $data[$index['module_name']] = ui_print_truncate_text(isset($alert['agent_module_name']) ? $alert['agent_module_name'] : modules_get_agentmodule_name($alert['id_agent_module']), 'module_small', false, true, true, '[&hellip;]', '');
} }
$data[$index['agent_name']] .= $disabledHtmlEnd; $data[$index['agent_name']] .= $disabledHtmlEnd;
@ -1184,7 +1184,7 @@ function ui_format_alert_row(
FROM talert_templates WHERE id = '.$alert['id_alert_template'] FROM talert_templates WHERE id = '.$alert['id_alert_template']
); );
$data[$index['description']] .= $disabledHtmlStart.ui_print_truncate_text(io_safe_output($description), 'description', false, true, true, '[&hellip;]', 'font-size: 7.1pt').$disabledHtmlEnd; $data[$index['description']] .= $disabledHtmlStart.ui_print_truncate_text(io_safe_output($description), 'description', false, true, true, '[&hellip;]', '').$disabledHtmlEnd;
$actions = alerts_get_alert_agent_module_actions($alert['id'], false, $alert['server_data']['id']); $actions = alerts_get_alert_agent_module_actions($alert['id'], false, $alert['server_data']['id']);
@ -3333,6 +3333,7 @@ function ui_print_datatable(array $parameters)
{ {
extend: "csv", extend: "csv",
text : "'.__('Export current page to CSV').'", text : "'.__('Export current page to CSV').'",
titleAttr: "'.__('Export current page to CSV').'",
title: "export_'.$parameters['id'].'_current_page_'.date('Y-m-d').'", title: "export_'.$parameters['id'].'_current_page_'.date('Y-m-d').'",
fieldSeparator: "'.$config['csv_divider'].'", fieldSeparator: "'.$config['csv_divider'].'",
exportOptions : { exportOptions : {

View File

@ -762,7 +762,7 @@ function newsletter_wiz_modal(
__('Cancel'), __('Cancel'),
'cancel_newsletter', 'cancel_newsletter',
false, false,
'class="ui-widget ui-state-default ui-corner-all ui-button-text-only sub upd submit-cancel" style="color: red; width:100px;"', 'class="ui-widget ui-state-default ui-corner-all ui-button-text-only sub upd submit-cancel" style="width:100px;"',
true true
); );
$output .= '</div>'; $output .= '</div>';
@ -1166,7 +1166,7 @@ function update_manager_install_package_step2()
} }
update_manager_enterprise_set_version($version); update_manager_enterprise_set_version($version);
$product_name = get_product_name(); $product_name = io_safe_output(get_product_name());
// Generate audit entry. // Generate audit entry.
db_pandora_audit( db_pandora_audit(

View File

@ -1900,6 +1900,8 @@ function visual_map_print_item(
echo '<img id="image_'.$id.'" src="images/console/signes/group_status.png" style="width:'.$width.'px;height:'.$height.'px;'.$imgpos.'">'; echo '<img id="image_'.$id.'" src="images/console/signes/group_status.png" style="width:'.$width.'px;height:'.$height.'px;'.$imgpos.'">';
} }
} else { } else {
$is_meta = is_metaconsole();
$agents_critical = agents_get_agents( $agents_critical = agents_get_agents(
[ [
'disabled' => 0, 'disabled' => 0,
@ -1908,7 +1910,10 @@ function visual_map_print_item(
], ],
['COUNT(*) as total'], ['COUNT(*) as total'],
'AR', 'AR',
false false,
false,
0,
$is_meta
); );
$agents_warning = agents_get_agents( $agents_warning = agents_get_agents(
[ [
@ -1918,7 +1923,10 @@ function visual_map_print_item(
], ],
['COUNT(*) as total'], ['COUNT(*) as total'],
'AR', 'AR',
false false,
false,
0,
$is_meta
); );
$agents_unknown = agents_get_agents( $agents_unknown = agents_get_agents(
[ [
@ -1928,7 +1936,10 @@ function visual_map_print_item(
], ],
['COUNT(*) as total'], ['COUNT(*) as total'],
'AR', 'AR',
false false,
false,
0,
$is_meta
); );
$agents_ok = agents_get_agents( $agents_ok = agents_get_agents(
[ [
@ -1938,7 +1949,10 @@ function visual_map_print_item(
], ],
['COUNT(*) as total'], ['COUNT(*) as total'],
'AR', 'AR',
false false,
false,
0,
$is_meta
); );
$total_agents = ($agents_critical[0]['total'] + $agents_warning[0]['total'] + $agents_unknown[0]['total'] + $agents_ok[0]['total']); $total_agents = ($agents_critical[0]['total'] + $agents_warning[0]['total'] + $agents_unknown[0]['total'] + $agents_ok[0]['total']);
$stat_agent_ok = ($agents_ok[0]['total'] / $total_agents * 100); $stat_agent_ok = ($agents_ok[0]['total'] / $total_agents * 100);

View File

@ -1447,9 +1447,6 @@ function visual_map_editor_print_hack_translate_strings()
<script type="text/javascript"> <script type="text/javascript">
$(document).ready (function () { $(document).ready (function () {
$("#map_linked").change(function () { $("#map_linked").change(function () {
$("option[value=" + this.value + "]", this)
.attr("selected", true).siblings()
.removeAttr("selected")
$("#text-agent").val(""); $("#text-agent").val("");
$("input[name=id_agent]").val(0); $("input[name=id_agent]").val(0);
$("#module").empty(); $("#module").empty();

View File

@ -86,6 +86,7 @@
} }
.defaultSkin table.mceLayout tr.mceLast td { .defaultSkin table.mceLayout tr.mceLast td {
border-bottom: 1px solid #ccc; border-bottom: 1px solid #ccc;
padding-bottom: 20px;
} }
.defaultSkin table.mceToolbar, .defaultSkin table.mceToolbar,
.defaultSkin tr.mceFirst .mceToolbar tr td, .defaultSkin tr.mceFirst .mceToolbar tr td,

View File

@ -737,7 +737,7 @@ var TreeController = {
} }
$graphImage.addClass("module-graph").click(function(e) { $graphImage.addClass("module-graph").click(function(e) {
e.preventDefault(); e.stopPropagation();
if (element.statusImageHTML.indexOf("data:image") != -1) { if (element.statusImageHTML.indexOf("data:image") != -1) {
try { try {
winopeng_var( winopeng_var(
@ -776,7 +776,7 @@ var TreeController = {
'images/binary.png" /> ' 'images/binary.png" /> '
); );
$dataImage.addClass("module-data").click(function(e) { $dataImage.addClass("module-data").click(function(e) {
e.preventDefault(); e.stopPropagation();
try { try {
var serverName = var serverName =

View File

@ -0,0 +1,103 @@
/*
* ---------------------------------------------------------------------
* - INSTALLING DB FOR DEMOS -
* ---------------------------------------------------------------------
*/
.textBanner,
h1,
p {
font-family: "Open Sans", "lato-bolder", sans-serif;
font-size: 1vw;
color: #3f3f3f;
}
h1 {
font-size: 2vw;
margin-bottom: 40px;
text-transform: none;
}
p {
font-size: 1vw;
}
#demo_side_left {
position: absolute;
width: 342px;
height: 1000px;
background-image: url(/pandora_console/images/demo_background_left.png);
z-index: 0;
}
#demo_side_right {
position: absolute;
width: 640px;
height: 1000px;
right: 0;
background-image: url(/pandora_console/images/demo_background_right.png);
z-index: 0;
}
#demo_side_center {
position: relative;
}
#spinner_logo_demo {
background: url(/pandora_console/images/demo_logo_spinner.gif) no-repeat;
margin: 0 auto;
width: 350px;
height: 350px;
}
#text_message_demo {
text-align: center;
}
div#header_demo {
width: 100%;
height: 65px;
}
div.text_banner_demo {
width: 100%;
margin: 20px 0 60px;
text-align: center;
}
.textBanner {
font-size: 3vw;
}
.textProduct {
color: #82b92e;
}
div#container_demo {
width: 100%;
margin-top: 100px;
}
div#list_icon_docs_support {
float: left;
margin-top: 25px;
margin-left: 5%;
}
div#list_icon_docs_support ul {
margin-top: 5px;
line-height: 36px;
}
div#list_icon_docs_support ul li {
display: inline-block;
color: #979797;
vertical-align: middle;
margin-right: 5px;
font-size: 10pt;
}
div#list_icon_docs_support ul li a {
color: #979797;
font-size: 10pt;
}

View File

@ -289,7 +289,7 @@ li.ui-tabs-tab.ui-corner-top.ui-state-default.ui-tab {
border-bottom: 1px solid #ccc; border-bottom: 1px solid #ccc;
} }
li.ui-tabs-tab.ui-corner-top.ui-state-default.ui-tab.ui-tabs-active.ui-state-active { li.ui-tabs-tab.ui-corner-top.ui-state-default.ui-tab.ui-tabs-active.ui-state-active {
border-bottom: 1px solid #fff; border-bottom: 2px solid #fff;
} }
tr.group { tr.group {

File diff suppressed because one or more lines are too long

View File

@ -33,6 +33,10 @@ div#error_buttons a {
background-repeat: repeat; background-repeat: repeat;
} }
.login_body_trident {
background: url("../../images/backgrounds/background_pandora_console_keys.jpg") !important;
}
p.log_in { p.log_in {
color: #fff; color: #fff;
padding: 0px 10px; padding: 0px 10px;

View File

@ -0,0 +1,54 @@
div.show_result_interpreter {
background-color: #fff;
color: #000;
border: 1px solid #e2e2e2;
border-bottom-left-radius: 10px;
border-bottom-right-radius: 10px;
padding-left: 10px;
padding-top: 5px;
padding-bottom: 5px;
box-shadow: 0px 0px 15px -4px #dadada;
position: absolute;
z-index: 1;
width: 300px;
}
.more_results {
text-align: right;
margin-right: 20px;
display: grid;
}
.results-found {
background-image: url("../../images/input_zoom_gray.png");
background-position: center right 10px;
background-repeat: no-repeat;
background-size: 17px;
background-color: #f2f6f7;
padding: 0px;
margin: 0;
width: 300px;
height: 30px;
margin-left: 2px;
padding-left: 15px;
padding-right: 40px;
color: #777;
font-family: "Open Sans", sans-serif;
font-size: 8.5pt;
border-top-left-radius: 10px;
border-top-right-radius: 10px;
border-color: transparent;
}
.list_found {
padding-top: 5px;
}
.active {
background: #f2f6f7;
}
.result_order {
margin-left: 2px;
display: grid;
}

View File

@ -27,6 +27,7 @@ div#page,
#menu_tab_frame, #menu_tab_frame,
#menu_tab_frame_view, #menu_tab_frame_view,
#menu_tab_frame_view_bc, #menu_tab_frame_view_bc,
ul.subsubmenu li,
input.search_input, input.search_input,
.filters input, .filters input,
input#text-id_parent.ac_input, input#text-id_parent.ac_input,
@ -100,6 +101,18 @@ table.widget_list td.datos2 {
background-color: inherit; background-color: inherit;
} }
/* Change inputs with autocomplete */
input:-webkit-autofill,
input:-webkit-autofill:hover,
input:-webkit-autofill:focus,
input:-webkit-autofill:active {
-webkit-box-shadow: 0 0 0 30px #111 inset !important;
}
input:-webkit-autofill {
-webkit-text-fill-color: #fff !important;
}
/* messages */ /* messages */
.container { .container {
background-color: #222; background-color: #222;
@ -251,6 +264,10 @@ table.table_modal_alternate tr:nth-child(even) td {
filter: brightness(2.5) contrast(50%); filter: brightness(2.5) contrast(50%);
} }
a.pandora_pagination {
color: #fff;
}
/* firts_task.css */ /* firts_task.css */
.new_task, .new_task,
div.new_task_cluster, div.new_task_cluster,
@ -337,11 +354,16 @@ table#diagnostic_info tbody td div {
color: #fff; color: #fff;
} }
.ui-widget-content.ui-autocomplete,
.ui-widget-content.ui-autocomplete a {
color: #333;
}
.ui-state-default, .ui-state-default,
.ui-widget-content .ui-state-default, .ui-widget-content .ui-state-default,
.ui-widget-header .ui-state-default { .ui-widget-header .ui-state-default {
background-color: #222; background-color: #222 !important;
color: #fff; color: #fff !important;
} }
.ui-state-active, .ui-state-active,
@ -366,6 +388,11 @@ ul.ui-tabs-nav.ui-corner-all.ui-helper-reset.ui-helper-clearfix.ui-widget-header
filter: brightness(2); filter: brightness(2);
} }
.ui-dialog .ui-dialog-buttonpane button {
background-color: transparent;
color: #fff;
}
/* notifications */ /* notifications */
#notification-wrapper::before { #notification-wrapper::before {
border-bottom-color: #111; border-bottom-color: #111;
@ -393,6 +420,17 @@ div#box_online * {
color: #555; color: #555;
} }
/* news dialog */
#news_dialog #new_text {
background: #222 !important;
}
/* ipam */
.tooltipster-content {
background: #222 !important;
}
/* licence */
div#code_license_dialog div#code, div#code_license_dialog div#code,
div#form_activate_licence #code { div#form_activate_licence #code {
margin-top: 20px; margin-top: 20px;

View File

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

View File

@ -1485,7 +1485,8 @@ if (!empty($result)) {
// Avoid the check on the metaconsole. Too slow to show/hide an icon depending on the permissions // Avoid the check on the metaconsole. Too slow to show/hide an icon depending on the permissions
if (!is_metaconsole()) { if (!is_metaconsole()) {
$acl_graphs = check_acl($config['id_user'], $row['id_group'], 'RR'); $agent_groups = agents_get_all_groups_agent($row['id_agent'], $row['id_group']);
$acl_graphs = check_acl_one_of_groups($config['id_user'], $agent_groups, 'RR');
} else { } else {
$acl_graphs = true; $acl_graphs = true;
} }
@ -1709,7 +1710,9 @@ if (!empty($result)) {
html_print_table($table); html_print_table($table);
ui_pagination($count, false, $offset, 0, false, 'offset', true, 'pagination-bottom'); if ($count_modules > $config['block_size']) {
ui_pagination($count_modules, false, $offset, 0, false, 'offset', true, 'pagination-bottom');
}
} else { } else {
if ($first_interaction) { if ($first_interaction) {
ui_print_info_message(['no_close' => true, 'message' => __('This group doesn\'t have any monitor')]); ui_print_info_message(['no_close' => true, 'message' => __('This group doesn\'t have any monitor')]);

View File

@ -302,7 +302,11 @@ switch ($opt) {
$osversion_offset = 0; $osversion_offset = 0;
} }
$row[] = ui_print_os_icon($agent['id_os'], true, true).'&nbsp;(<i><span title="'.$agent['os_version'].'">'.substr($agent['os_version'], $osversion_offset, 15).'</span></i>)'; if ($agent['os_version'] != '') {
$agent_os_version = '&nbsp;(<i><span title="'.$agent['os_version'].'">'.substr($agent['os_version'], $osversion_offset, 15).'</span></i>)';
}
$row[] = ui_print_os_icon($agent['id_os'], true, true).$agent_os_version;
$table->data[] = $row; $table->data[] = $row;
// URL // URL
@ -331,7 +335,12 @@ switch ($opt) {
// Agent version // Agent version
$row = []; $row = [];
if (strtolower(get_os_name($agent['id_os'])) == 'satellite') {
$row[] = __('Satellite Version');
} else {
$row[] = __('Agent Version'); $row[] = __('Agent Version');
}
$row[] = $agent['agent_version']; $row[] = $agent['agent_version'];
$table->data[] = $row; $table->data[] = $row;

View File

@ -165,9 +165,13 @@ echo "<div style='width:100%'>".html_print_button(
check_users(); check_users();
if (first_time) { if (first_time) {
var date_first_message = unix_timestamp(data['log'][0]['timestamp']);
if(!date_first_message){
date_first_message = unix_timestamp(new Date()/1000);
}
print_messages({ print_messages({
0: {'type' : 'notification', 0: {'type' : 'notification',
'text': '<?php echo __('Connection established...get last 24h messages...'); ?>'} 'text': '<?php echo __('Connection established - Retrieving messages since '); ?>'+date_first_message}
}, true); }, true);
first_time = false; first_time = false;
} }
@ -308,4 +312,24 @@ echo "<div style='width:100%'>".html_print_button(
} }
}); });
} }
// Function to convert a timestamp to human date.
function unix_timestamp(timestamp){
var date = new Date(timestamp*1000);
const monthNames = [
"January", "February", "March", "April",
"May", "June", "July", "August",
"September", "October", "November", "December"
];
var month = monthNames[date.getMonth()];
var day = date.getDate();
var year = date.getFullYear();
var hour = date.getHours();
var min = date.getMinutes();
return month + ' ' + day + ', '+ year + ', ' + hour+ ':' + min;
}
</script> </script>

View File

@ -3,7 +3,7 @@
# #
%define name pandorafms_console %define name pandorafms_console
%define version 7.0NG.742 %define version 7.0NG.742
%define release 191218 %define release 200109
# 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.742 %define version 7.0NG.742
%define release 191218 %define release 200109
# 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.742 %define version 7.0NG.742
%define release 191218 %define release 200109
%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.742-191218 Version: 7.0NG.742-200109
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.742-191218" pandora_version="7.0NG.742-200109"
package_cpan=0 package_cpan=0
package_pandora=1 package_pandora=1

View File

@ -163,9 +163,11 @@ wmiserver 1
network_timeout 4 network_timeout 4
# Network timeout (in seconds) for timeout in remote execution commands (PANDORA FMS ENTERPRISE ONLY). # Network timeout (in seconds) for timeout in remote execution commands (PANDORA FMS ENTERPRISE ONLY).
rcmd_timeout 30 rcmd_timeout 30
# Remote execution modules, ssh_launcher extra option (PANDORA FMS ENTERPRISE ONLY).
ssh_launcher /usr/share/pandora_server/util/ssh_launcher.sh
# Server keepalive (in seconds) # Server keepalive (in seconds)
server_keepalive 45 server_keepalive 45

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.742"; my $pandora_version = "7.0NG.742";
my $pandora_build = "191218"; my $pandora_build = "200109";
our $VERSION = $pandora_version." ".$pandora_build; our $VERSION = $pandora_version." ".$pandora_build;
# Setup hash # Setup hash
@ -360,6 +360,9 @@ sub pandora_load_config {
# Discovery SAP Artica environment # Discovery SAP Artica environment
$pa_config->{"sap_artica_test"} = 0; $pa_config->{"sap_artica_test"} = 0;
# Remote execution modules, option ssh_launcher
$pa_config->{"ssh_launcher"} = "/usr/bin/ssh_launcher";
# braa for enterprise snmp server # braa for enterprise snmp server
$pa_config->{"braa"} = "/usr/bin/braa"; $pa_config->{"braa"} = "/usr/bin/braa";
@ -861,6 +864,9 @@ sub pandora_load_config {
elsif ($parametro =~ m/^sap_artica_test\s(.*)/i) { elsif ($parametro =~ m/^sap_artica_test\s(.*)/i) {
$pa_config->{'sap_artica_test'}= clean_blank($1); $pa_config->{'sap_artica_test'}= clean_blank($1);
} }
elsif ($parametro =~ m/^ssh_launcher\s(.*)/i) {
$pa_config->{'ssh_launcher'}= clean_blank($1);
}
elsif ($parametro =~ m/^nmap_timing_template\s+([0-9]*)/i) { elsif ($parametro =~ m/^nmap_timing_template\s+([0-9]*)/i) {
$pa_config->{'nmap_timing_template'}= clean_blank($1); $pa_config->{'nmap_timing_template'}= clean_blank($1);
} }

View File

@ -1660,7 +1660,9 @@ sub pandora_process_module ($$$$$$$$$;$) {
pandora_update_module_on_error ($pa_config, $module, $dbh); pandora_update_module_on_error ($pa_config, $module, $dbh);
return; return;
} }
my $last_try = ($1 == 0) ? 0 : timelocal($6, $5, $4, $3, $2 - 1, $1 - 1900);
my $last_try = ($1 == 0) ? 0 : strftime("%s", $6, $5, $4, $3, $2 - 1, $1 - 1900);
my $save = ($module->{'history_data'} == 1 && ($agent_status->{'datos'} ne $processed_data || $last_try < ($utimestamp - 86400))) ? 1 : 0; my $save = ($module->{'history_data'} == 1 && ($agent_status->{'datos'} ne $processed_data || $last_try < ($utimestamp - 86400))) ? 1 : 0;
# Received stale data. Save module data if needed and return. # Received stale data. Save module data if needed and return.
@ -3823,7 +3825,7 @@ sub pandora_evaluate_snmp_alerts ($$$$$$$$$) {
# Check time threshold # Check time threshold
$alert->{'last_fired'} = '1970-01-01 00:00:00' unless defined ($alert->{'last_fired'}); $alert->{'last_fired'} = '1970-01-01 00:00:00' unless defined ($alert->{'last_fired'});
return unless ($alert->{'last_fired'} =~ /(\d+)\-(\d+)\-(\d+) +(\d+):(\d+):(\d+)/); return unless ($alert->{'last_fired'} =~ /(\d+)\-(\d+)\-(\d+) +(\d+):(\d+):(\d+)/);
my $last_fired = ($1 > 0) ? timelocal($6, $5, $4, $3, $2 - 1, $1 - 1900) : 0; my $last_fired = ($1 > 0) ? strftime("%s", $6, $5, $4, $3, $2 - 1, $1 - 1900) : 0;
my $utimestamp = time (); my $utimestamp = time ();
my $timestamp = strftime ("%Y-%m-%d %H:%M:%S", localtime($utimestamp)); my $timestamp = strftime ("%Y-%m-%d %H:%M:%S", localtime($utimestamp));

View File

@ -309,7 +309,7 @@ sub process_xml_data ($$$$$) {
my $utimestamp = 0; my $utimestamp = 0;
eval { eval {
if ($timestamp =~ /(\d+)[\/|\-](\d+)[\/|\-](\d+) +(\d+):(\d+):(\d+)/) { if ($timestamp =~ /(\d+)[\/|\-](\d+)[\/|\-](\d+) +(\d+):(\d+):(\d+)/) {
$utimestamp = timelocal($6, $5, $4, $3, $2 -1 , $1 - 1900); $utimestamp = strftime("%s", $6, $5, $4, $3, $2 -1 , $1 - 1900);
} }
}; };
@ -837,7 +837,7 @@ sub process_module_data ($$$$$$$$$$) {
} }
my $utimestamp; my $utimestamp;
eval { eval {
$utimestamp = timelocal($6, $5, $4, $3, $2 - 1, $1 - 1900); $utimestamp = strftime("%s", $6, $5, $4, $3, $2 - 1, $1 - 1900);
}; };
if ($@) { if ($@) {
logger($pa_config, "Invalid timestamp '$timestamp' from module '$module_name' agent '$agent_name'.", 3); logger($pa_config, "Invalid timestamp '$timestamp' from module '$module_name' agent '$agent_name'.", 3);

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.742"; my $pandora_version = "7.0NG.742";
my $pandora_build = "191218"; my $pandora_build = "200109";
our $VERSION = $pandora_version." ".$pandora_build; our $VERSION = $pandora_version." ".$pandora_build;
our %EXPORT_TAGS = ( 'all' => [ qw() ] ); our %EXPORT_TAGS = ( 'all' => [ qw() ] );
@ -2382,7 +2382,7 @@ sub get_unix_time {
eval { eval {
use Time::Local; use Time::Local;
my ($mday,$mon,$year,$hour,$min,$sec) = split(/[\s$separator_dates$separator_hours]+/, $str_time); my ($mday,$mon,$year,$hour,$min,$sec) = split(/[\s$separator_dates$separator_hours]+/, $str_time);
$time = timelocal($sec,$min,$hour,$mday,$mon-1,$year); $time = strftime("%s", $sec,$min,$hour,$mday,$mon-1,$year);
}; };
if ($@) { if ($@) {
return 0; return 0;

View File

@ -1734,7 +1734,7 @@ sub cron_valid_date {
my $utime; my $utime;
eval { eval {
local $SIG{__DIE__} = sub {}; local $SIG{__DIE__} = sub {};
$utime = timelocal(0, $min, $hour, $mday, $month, $year); $utime = strftime("%s", 0, $min, $hour, $mday, $month, $year);
}; };
if ($@) { if ($@) {
return 0; return 0;

View File

@ -3,7 +3,7 @@
# #
%define name pandorafms_server %define name pandorafms_server
%define version 7.0NG.742 %define version 7.0NG.742
%define release 191218 %define release 200109
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.742 %define version 7.0NG.742
%define release 191218 %define release 200109
Summary: Pandora FMS Server Summary: Pandora FMS Server
Name: %{name} Name: %{name}

View File

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

View File

@ -216,7 +216,7 @@ sub process_module_data ($$$$$$$$$) {
$timestamp !~ /(\d+)\-(\d+)\-(\d+) +(\d+):(\d+):(\d+)/) { $timestamp !~ /(\d+)\-(\d+)\-(\d+) +(\d+):(\d+):(\d+)/) {
} }
my $utimestamp; my $utimestamp;
$utimestamp = timelocal($6, $5, $4, $3, $2 - 1, $1 - 1900); $utimestamp = strftime("%s", $6, $5, $4, $3, $2 - 1, $1 - 1900);
my %data_object; my %data_object;

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.742 PS191218"; my $version = "7.0NG.742 PS200109";
# 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.742 PS191218"; my $version = "7.0NG.742 PS200109";
# save program name for logging # save program name for logging
my $progname = basename($0); my $progname = basename($0);
@ -640,9 +640,9 @@ sub pandora_delete_module_data ($$) {
my $buffer = 1000; my $buffer = 1000;
while(1) { while(1) {
my $nd = get_db_value ($dbh, 'SELECT count(id_agente_modulo) FROM tagente_datos_string WHERE id_agente_modulo=?', $id_module); my $nd = get_db_value ($dbh, 'SELECT count(id_agente_modulo) FROM tagente_datos WHERE id_agente_modulo=?', $id_module);
my $ndinc = get_db_value ($dbh, 'SELECT count(id_agente_modulo) FROM tagente_datos_string WHERE id_agente_modulo=?', $id_module); my $ndinc = get_db_value ($dbh, 'SELECT count(id_agente_modulo) FROM tagente_datos_inc WHERE id_agente_modulo=?', $id_module);
my $ndlog4x = get_db_value ($dbh, 'SELECT count(id_agente_modulo) FROM tagente_datos_string WHERE id_agente_modulo=?', $id_module); my $ndlog4x = get_db_value ($dbh, 'SELECT count(id_agente_modulo) FROM tagente_datos_log4x WHERE id_agente_modulo=?', $id_module);
my $ndstring = get_db_value ($dbh, 'SELECT count(id_agente_modulo) FROM tagente_datos_string WHERE id_agente_modulo=?', $id_module); my $ndstring = get_db_value ($dbh, 'SELECT count(id_agente_modulo) FROM tagente_datos_string WHERE id_agente_modulo=?', $id_module);
my $ntot = $nd + $ndinc + $ndlog4x + $ndstring; my $ntot = $nd + $ndinc + $ndlog4x + $ndstring;
@ -652,19 +652,19 @@ sub pandora_delete_module_data ($$) {
} }
if($nd > 0) { if($nd > 0) {
db_do ($dbh, 'DELETE FROM tagente_datos WHERE id_agente_modulo=? LIMIT ?', $id_module, $buffer); db_delete_limit($dbh, 'tagente_datos', 'id_agente_modulo='.$id_module, $buffer);
} }
if($ndinc > 0) { if($ndinc > 0) {
db_do ($dbh, 'DELETE FROM tagente_datos_inc WHERE id_agente_modulo=? LIMIT ?', $id_module, $buffer); db_delete_limit($dbh, 'tagente_datos_inc', 'id_agente_modulo='.$id_module, $buffer);
} }
if($ndlog4x > 0) { if($ndlog4x > 0) {
db_do ($dbh, 'DELETE FROM tagente_datos_log4x WHERE id_agente_modulo=? LIMIT ?', $id_module, $buffer); db_delete_limit($dbh, 'tagente_datos_log4x', 'id_agente_modulo='.$id_module, $buffer);
} }
if($ndstring > 0) { if($ndstring > 0) {
db_do ($dbh, 'DELETE FROM tagente_datos_string WHERE id_agente_modulo=? LIMIT ?', $id_module, $buffer); db_delete_limit($dbh, 'tagente_datos_string', 'id_agente_modulo='.$id_module, $buffer);
} }
} }
@ -4416,7 +4416,7 @@ sub cli_delete_data($) {
print_log "DELETING THE DATA OF THE AGENT $name\n\n"; print_log "DELETING THE DATA OF THE AGENT $name\n\n";
pandora_delete_data($dbh, 'module', $id_agent); pandora_delete_data($dbh, 'agent', $id_agent);
} }
} else { } else {
my $id_agent = get_agent_id($dbh,$name); my $id_agent = get_agent_id($dbh,$name);
@ -4424,7 +4424,7 @@ sub cli_delete_data($) {
print_log "DELETING THE DATA OF THE AGENT $name\n\n"; print_log "DELETING THE DATA OF THE AGENT $name\n\n";
pandora_delete_data($dbh, 'module', $id_agent); pandora_delete_data($dbh, 'agent', $id_agent);
} }
} }
elsif($opt eq '-g' || $opt eq '--g') { elsif($opt eq '-g' || $opt eq '--g') {

View File

@ -112,13 +112,13 @@ sub generate_xml_files ($$$$$$) {
my $time_from = get_conf_token ($conf, 'time_from', $time_now); my $time_from = get_conf_token ($conf, 'time_from', $time_now);
die ("[error] Invalid time_from: $time_from\n\n") die ("[error] Invalid time_from: $time_from\n\n")
unless ($time_from =~ /(\d+)\-(\d+)\-(\d+) +(\d+):(\d+):(\d+)/); unless ($time_from =~ /(\d+)\-(\d+)\-(\d+) +(\d+):(\d+):(\d+)/);
my $utimestamp_from = timelocal($6, $5, $4, $3, $2 - 1, $1 - 1900); my $utimestamp_from = strftime("%s", $6, $5, $4, $3, $2 - 1, $1 - 1900);
# Get time_to # Get time_to
my $time_to = get_conf_token ($conf, 'time_to', $time_now); my $time_to = get_conf_token ($conf, 'time_to', $time_now);
die ("[error] Invalid time_to: $time_to\n\n") die ("[error] Invalid time_to: $time_to\n\n")
unless ($time_to =~ /(\d+)\-(\d+)\-(\d+) +(\d+):(\d+):(\d+)/); unless ($time_to =~ /(\d+)\-(\d+)\-(\d+) +(\d+):(\d+):(\d+)/);
my $utimestamp_to = timelocal($6, $5, $4, $3, $2 - 1, $1 - 1900); my $utimestamp_to = strftime("%s", $6, $5, $4, $3, $2 - 1, $1 - 1900);
my %modules_src_pointers = init_src_pointers($modules); my %modules_src_pointers = init_src_pointers($modules);