Merge remote-tracking branch 'origin/develop' into 1744-Opción-para-validar-que-la-ip-de-un-agente-sea-unica

Conflicts:
	pandora_console/godmode/setup/setup_general.php
	pandora_console/include/styles/pandora.css
	pandora_console/install.php


Former-commit-id: b94f977a4d39f2e9e59b7ed9626115b0a458c5dd
This commit is contained in:
Tatiana Llorente 2019-02-15 13:18:10 +01:00
commit 6c9ce7e65b
57 changed files with 1469 additions and 426 deletions

View File

@ -1,5 +1,5 @@
package: pandorafms-agent-unix package: pandorafms-agent-unix
Version: 7.0NG.731-190207 Version: 7.0NG.731-190215
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.731-190207" pandora_version="7.0NG.731-190215"
echo "Test if you has the tools for to make the packages." echo "Test if you has the tools for to make the packages."
whereis dpkg-deb | cut -d":" -f2 | grep dpkg-deb > /dev/null whereis dpkg-deb | cut -d":" -f2 | grep dpkg-deb > /dev/null

View File

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

View File

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

View File

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

View File

@ -328,4 +328,3 @@ function mainModuleGroups()
extensions_add_operation_menu_option(__('Module groups'), 'estado', 'module_groups/brick.png', 'v1r1', 'view'); extensions_add_operation_menu_option(__('Module groups'), 'estado', 'module_groups/brick.png', 'v1r1', 'view');
extensions_add_main_function('mainModuleGroups'); extensions_add_main_function('mainModuleGroups');

View File

@ -320,6 +320,23 @@ $(document).ready( function() {
} }
else { else {
$('div#title_menu').hide(); $('div#title_menu').hide();
if(!click_display){
$('#menu').mouseenter(function() {
handsInMenu = 1;
openTimeMenu = new Date().getTime();
$('ul.submenu').css('left', '44px');
}).mouseleave(function() {
handsInMenu = 0;
setTimeout(function() {
openedMenu = new Date().getTime() - openTimeMenu;
if(openedMenu > 1000 && handsInMenu == 0) {
$('li.menu_icon').removeClass( " no_hidden_menu");
$('li.menu_icon').find('li').removeClass( " no_hidden_menu" );
$('ul.submenu').css('left', '44px');
}
}, 2500);
});
}
} }
}); });
/* ]]> */ /* ]]> */
@ -332,7 +349,6 @@ $(document).ready( function() {
handsIn2 = 0; handsIn2 = 0;
if(!click_display){ if(!click_display){
if (autohidden_menu) {
$('.menu_icon').mouseenter(function() { $('.menu_icon').mouseenter(function() {
table_hover = $(this); table_hover = $(this);
handsIn = 1; handsIn = 1;
@ -352,7 +368,6 @@ $(document).ready( function() {
} }
}, 2500); }, 2500);
}); });
}
}else{ }else{
$(document).ready(function() { $(document).ready(function() {
if (autohidden_menu) { if (autohidden_menu) {

View File

@ -962,6 +962,10 @@ if ($update_agent) {
$disabled ? '1' : '0', $disabled ? '1' : '0',
] ]
); );
// Validate alerts for disabled agents.
if ($disabled) {
alerts_validate_alert_agent($id_agente);
}
} }
if ($tpolicy_group_old) { if ($tpolicy_group_old) {

View File

@ -44,8 +44,7 @@ if (empty($update_module_id)) {
$data = []; $data = [];
$data[0] = __('Target IP'); $data[0] = __('Target IP');
$data[1] = html_print_input_text('ip_target', $ip_target, '', 15, 60, true); $data[1] = html_print_input_text('ip_target', $ip_target, '', 15, 60, true);
$data[2] = __('Namespace'); $data[2] = __('Namespace').ui_print_help_tip(__('Optional. WMI namespace. If unsure leave blank.'), true);
$data[2] .= ui_print_help_icon('wminamespace', true);
$data[3] = html_print_input_text( $data[3] = html_print_input_text(
'tcp_send', 'tcp_send',
$tcp_send, $tcp_send,
@ -110,8 +109,7 @@ $table_simple->colspan['wmi_query'][1] = 3;
push_table_simple($data, 'wmi_query'); push_table_simple($data, 'wmi_query');
$data = []; $data = [];
$data[0] = __('Key string'); $data[0] = __('Key string').ui_print_help_tip(__('Optional. Substring to look for in the WQL query result. The module returns 1 if found, 0 if not.'), true);
$data[0] .= ui_print_help_icon('wmikey', true);
$data[1] = html_print_input_text( $data[1] = html_print_input_text(
'snmp_community', 'snmp_community',
$snmp_community, $snmp_community,
@ -124,8 +122,7 @@ $data[1] = html_print_input_text(
'', '',
$classdisabledBecauseInPolicy $classdisabledBecauseInPolicy
); );
$data[2] = __('Field number'); $data[2] = __('Field number').ui_print_help_tip(__('Column number to retrieve from the WQL query result (starting from zero).'), true);
$data[2] .= ui_print_help_icon('wmifield', true);
$data[3] = html_print_input_text( $data[3] = html_print_input_text(
'tcp_port', 'tcp_port',
$tcp_port, $tcp_port,

View File

@ -538,17 +538,22 @@ if ($tab == 'tree') {
$url_delete = 'index.php?sec=gagente&sec2=godmode/groups/group_list&delete_group=1&id_group='.$group['id_grupo']; $url_delete = 'index.php?sec=gagente&sec2=godmode/groups/group_list&delete_group=1&id_group='.$group['id_grupo'];
$table->data[$key][0] = $group['id_grupo']; $table->data[$key][0] = $group['id_grupo'];
$table->data[$key][1] = "<a href='$url'>".$group['nombre'].'</a>'; $table->data[$key][1] = "<a href='$url'>".$group['nombre'].'</a>';
$table->data[$key][2] = html_print_image( if ($group['icon'] != '') {
'images/groups_small/'.$group['icon'].'.png', $table->data[$key][2] = html_print_image(
true, 'images/groups_small/'.$group['icon'].'.png',
[ true,
'style' => '', [
'class' => 'bot', 'style' => '',
'alt' => $group['nombre'], 'class' => 'bot',
'title' => $group['nombre'], 'alt' => $group['nombre'],
false, false, false, true 'title' => $group['nombre'],
] false, false, false, true
); ]
);
} else {
$table->data[$key][2] = '';
}
// reporting_get_group_stats // reporting_get_group_stats
$table->data[$key][3] = $group['disabled'] ? __('Disabled') : __('Enabled'); $table->data[$key][3] = $group['disabled'] ? __('Disabled') : __('Enabled');

View File

@ -205,6 +205,10 @@ if ($update_agents) {
$values['disabled'], $values['disabled'],
] ]
); );
// Validate alerts for disabled agents.
if ($values['disabled'] == 1) {
alerts_validate_alert_agent($id_agent);
}
} }
if ($group_old || $result) { if ($group_old || $result) {

View File

@ -143,7 +143,7 @@ if ($update) {
} }
} }
} else { } else {
// Standard procedure // Standard procedure.
foreach ($agents_ as $agent_) { foreach ($agents_ as $agent_) {
if ($modules_ == false) { if ($modules_ == false) {
$modules_ = []; $modules_ = [];
@ -315,7 +315,7 @@ if ($module_type != '') {
$names = agents_get_modules( $names = agents_get_modules(
array_keys($agents), array_keys($agents),
'DISTINCT(tagente_modulo.nombre)', 'tagente_modulo.nombre',
$filter, $filter,
false false
); );
@ -1965,4 +1965,3 @@ function process_manage_edit($module_name, $agents_select=null, $module_status='
return true; return true;
} }

View File

@ -47,7 +47,7 @@ if ($create_network_from_module) {
$id_module_group = $data_module['id_module_group']; $id_module_group = $data_module['id_module_group'];
$id_plugin = $data_module['id_plugin']; $id_plugin = $data_module['id_plugin'];
$plugin_user = $data_module['plugin_user']; $plugin_user = $data_module['plugin_user'];
$plugin_pass = $data_module['plugin_pass']; $plugin_pass = io_output_password($data_module['plugin_pass']);
$plugin_parameter = $data_module['plugin_parameter']; $plugin_parameter = $data_module['plugin_parameter'];
$macros = $data_module['macros']; $macros = $data_module['macros'];
$max_timeout = $data_module['max_timeout']; $max_timeout = $data_module['max_timeout'];
@ -104,7 +104,7 @@ if (isset($id)) {
$id_group = $component['id_group']; $id_group = $component['id_group'];
$id_plugin = $component['id_plugin']; $id_plugin = $component['id_plugin'];
$plugin_user = $component['plugin_user']; $plugin_user = $component['plugin_user'];
$plugin_pass = $component['plugin_pass']; $plugin_pass = io_output_password($component['plugin_pass']);
$plugin_parameter = $component['plugin_parameter']; $plugin_parameter = $component['plugin_parameter'];
$macros = $component['macros']; $macros = $component['macros'];
$max_timeout = $component['max_timeout']; $max_timeout = $component['max_timeout'];
@ -140,10 +140,10 @@ if (isset($id)) {
// New support for snmp v3 // New support for snmp v3
$snmp_version = $component['tcp_send']; $snmp_version = $component['tcp_send'];
$snmp3_auth_user = $component['plugin_user']; $snmp3_auth_user = $component['plugin_user'];
$snmp3_auth_pass = $component['plugin_pass']; $snmp3_auth_pass = io_output_password($component['plugin_pass']);
$snmp3_auth_method = $component['plugin_parameter']; $snmp3_auth_method = $component['plugin_parameter'];
$snmp3_privacy_method = $component['custom_string_1']; $snmp3_privacy_method = $component['custom_string_1'];
$snmp3_privacy_pass = $component['custom_string_2']; $snmp3_privacy_pass = io_output_password($component['custom_string_2']);
$snmp3_security_level = $component['custom_string_3']; $snmp3_security_level = $component['custom_string_3'];
} }
} else if (isset($new_component) && $new_component && !$create_network_from_snmp_browser) { } else if (isset($new_component) && $new_component && !$create_network_from_snmp_browser) {

View File

@ -42,6 +42,7 @@ if (!$is_metaconsole) {
$url_visual_console_favorite = 'index.php?sec=screen&sec2=screens/screens&action=visualmap_favorite'; $url_visual_console_favorite = 'index.php?sec=screen&sec2=screens/screens&action=visualmap_favorite';
$url_visual_console_template = 'index.php?sec=screen&sec2=screens/screens&action=visualmap_template'; $url_visual_console_template = 'index.php?sec=screen&sec2=screens/screens&action=visualmap_template';
$url_visual_console_template_wizard = 'index.php?sec=screen&sec2=screens/screens&action=visualmap_wizard'; $url_visual_console_template_wizard = 'index.php?sec=screen&sec2=screens/screens&action=visualmap_wizard';
$url_visual_console_manager = 'index.php?sec=screen&sec2=enterprise/extensions/visual_console_manager';
} }
$pure = (int) get_parameter('pure', 0); $pure = (int) get_parameter('pure', 0);
@ -70,6 +71,12 @@ if ($is_enterprise && $vconsoles_manage) {
'active' => false, 'active' => false,
'text' => '<a href="'.$url_visual_console_template_wizard.'">'.html_print_image('images/wand.png', true, ['title' => __('Visual Console Template Wizard')]).'</a>', 'text' => '<a href="'.$url_visual_console_template_wizard.'">'.html_print_image('images/wand.png', true, ['title' => __('Visual Console Template Wizard')]).'</a>',
]; ];
if ($is_metaconsole) {
$buttons['visual_console_manager'] = [
'active' => false,
'text' => '<a href="'.$url_visual_console_manager.'">'.html_print_image('images/builder.png', true, ['title' => __('Visual Console Manager')]).'</a>',
];
}
} }
if (!$is_metaconsole) { if (!$is_metaconsole) {

View File

@ -41,6 +41,7 @@ if (!$is_metaconsole) {
$url_visual_console_favorite = 'index.php?sec=screen&sec2=screens/screens&action=visualmap_favorite'; $url_visual_console_favorite = 'index.php?sec=screen&sec2=screens/screens&action=visualmap_favorite';
$url_visual_console_template = 'index.php?sec=screen&sec2=screens/screens&action=visualmap_template'; $url_visual_console_template = 'index.php?sec=screen&sec2=screens/screens&action=visualmap_template';
$url_visual_console_template_wizard = 'index.php?sec=screen&sec2=screens/screens&action=visualmap_wizard'; $url_visual_console_template_wizard = 'index.php?sec=screen&sec2=screens/screens&action=visualmap_wizard';
$url_visual_console_manager = 'index.php?sec=screen&sec2=enterprise/extensions/visual_console_manager';
} }
$buttons['visual_console'] = [ $buttons['visual_console'] = [
@ -63,6 +64,13 @@ if ($is_enterprise && $vconsoles_manage) {
'active' => false, 'active' => false,
'text' => '<a href="'.$url_visual_console_template_wizard.'">'.html_print_image('images/wand.png', true, ['title' => __('Visual Console Template Wizard')]).'</a>', 'text' => '<a href="'.$url_visual_console_template_wizard.'">'.html_print_image('images/wand.png', true, ['title' => __('Visual Console Template Wizard')]).'</a>',
]; ];
if ($is_metaconsole) {
$buttons['visual_console_manager'] = [
'active' => false,
'text' => '<a href="'.$url_visual_console_manager.'">'.html_print_image('images/builder.png', true, ['title' => __('Visual Console Manager')]).'</a>',
];
}
} }
if (!$is_metaconsole) { if (!$is_metaconsole) {

View File

@ -1,37 +1,242 @@
<?php <?php
/**
* Extension to manage a list of gateways and the node address where they should
* point to.
*
* @category Extensions
* @package Pandora FMS
* @subpackage Community
* @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.
* ============================================================================
*/
// Pandora FMS - http://pandorafms.com // Load global vars.
// ==================================================
// Copyright (c) 2005-2009 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.
// Load global vars
global $config; global $config;
require_once 'include/config.php';
check_login(); check_login();
if (! check_acl($config['id_user'], 0, 'PM') && ! is_user_admin($config['id_user'])) { if (! check_acl($config['id_user'], 0, 'PM')
&& ! is_user_admin($config['id_user'])
) {
db_pandora_audit('ACL Violation', 'Trying to access Setup Management'); db_pandora_audit('ACL Violation', 'Trying to access Setup Management');
include 'general/noaccess.php'; include 'general/noaccess.php';
return; return;
} }
// Load enterprise extensions $update_config = get_parameter('update_config', 0);
// ~ enterprise_include_once ('godmode/setup/setup.php'); if ($update_config == 1 && $config['history_db_enabled'] == 1) {
/* if (! isset($config['history_db_connection'])
NOTICE FOR DEVELOPERS: || $config['history_db_connection'] === false
) {
$config['history_db_connection'] = db_connect(
$config['history_db_host'],
$config['history_db_name'],
$config['history_db_user'],
io_output_password($config['history_db_pass']),
$config['history_db_port'],
false
);
}
if ($config['history_db_connection'] !== false) {
$historical_days_purge = get_parameter('historical_days_purge', 0);
$historical_days_compact = get_parameter('historical_days_compact', 0);
$historical_step_compact = get_parameter('historical_step_compact', 0);
$historical_event_purge = get_parameter('historical_event_purge', 0);
$historical_string_purge = get_parameter('historical_string_purge', 0);
$history_connect = @mysql_db_process_sql(
'SELECT 1 FROM tconfig',
'affected_rows',
$config['history_db_connection'],
false
);
$config_history = false;
if ($history_connect !== false) {
$config_history = mysql_db_process_sql(
'SELECT * FROM tconfig',
'affected_rows',
$config['history_db_connection'],
false
);
if (!$config_history) {
$sql = "INSERT INTO tconfig (token, `value`) VALUES
('days_purge', ".$historical_days_purge."),
('days_compact', ".$historical_days_compact."),
('step_compact', ".$historical_step_compact."),
('event_purge', ".$historical_event_purge."),
('string_purge', ".$historical_string_purge."),
('history_db_enabled', 0)";
mysql_db_process_sql(
$sql,
'insert_id',
$config['history_db_connection'],
false
);
} else {
$sql = 'UPDATE tconfig SET `value` = '.$historical_days_purge." WHERE token = 'days_purge'";
mysql_db_process_sql(
$sql,
'update_id',
$config['history_db_connection'],
false
);
$sql = 'UPDATE tconfig SET `value` = '.$historical_days_compact." WHERE token = 'days_compact'";
mysql_db_process_sql(
$sql,
'update_id',
$config['history_db_connection'],
false
);
$sql = 'UPDATE tconfig SET `value` = '.$historical_step_compact." WHERE token = 'step_compact'";
mysql_db_process_sql(
$sql,
'update_id',
$config['history_db_connection'],
false
);
$sql = 'UPDATE tconfig SET `value` = '.$historical_event_purge." WHERE token = 'event_purge'";
mysql_db_process_sql(
$sql,
'update_id',
$config['history_db_connection'],
false
);
$sql = 'UPDATE tconfig SET `value` = '.$historical_string_purge." WHERE token = 'string_purge'";
mysql_db_process_sql(
$sql,
'update_id',
$config['history_db_connection'],
false
);
$sql = "UPDATE tconfig SET `value` = 0 WHERE token = 'history_db_enabled'";
mysql_db_process_sql(
$sql,
'update_id',
$config['history_db_connection'],
false
);
}
}
}
}
$table_status = new StdClass();
$table_status->width = '100%';
$table_status->class = 'databox filters';
$table_status->style[0] = 'font-weight: bold';
$table_status->size[0] = '10%';
$table_status->data = [];
$sql = "SELECT UNIX_TIMESTAMP(NOW()) - `value` AS updated_at
FROM tconfig
WHERE token = 'db_maintance'";
$time_pandora_db_active = db_get_sql($sql);
if ($time_pandora_db_active < SECONDS_12HOURS) {
$table_status->data[0][0] = html_print_image(
'images/dot_green.png',
true
);
} else {
$table_status->data[0][0] = html_print_image(
'images/dot_red.png',
true
);
}
$table_status->data[0][0] .= ' '.__('Pandora_db running in active database.');
$table_status->data[0][0] .= ' '.__('Executed:').' ';
$table_status->data[0][0] .= human_time_description_raw(
$time_pandora_db_active,
true
);
$table_status->data[0][0] .= ' '.__('ago').'.';
if ($config['history_db_enabled'] == 1) {
if (! isset($config['history_db_connection'])
|| $config['history_db_connection'] === false
) {
$config['history_db_connection'] = db_connect(
$config['history_db_host'],
$config['history_db_name'],
$config['history_db_user'],
io_output_password($config['history_db_pass']),
$config['history_db_port'],
false
);
}
$history_connect = @mysql_db_process_sql(
'SELECT 1 FROM tconfig',
'affected_rows',
$config['history_db_connection'],
false
);
$time_pandora_db_history = false;
if ($history_connect !== false) {
if ($config['history_db_connection'] !== false) {
$time_pandora_db_history = mysql_db_process_sql(
$sql,
'insert_id',
$config['history_db_connection'],
false
);
}
}
if ($time_pandora_db_history !== false
&& $time_pandora_db_history[0]['updated_at'] < SECONDS_12HOURS
) {
$table_status->data[1][0] = html_print_image(
'images/dot_green.png',
true
);
} else {
$table_status->data[1][0] = html_print_image(
'images/dot_red.png',
true
);
}
$table_status->data[1][0] .= ' '.__('Pandora_db running in historical database.');
$table_status->data[1][0] .= ' '.__('Executed:').' ';
if ($time_pandora_db_history !== false) {
$table_status->data[1][0] .= human_time_description_raw(
$time_pandora_db_history[0]['updated_at'],
true
).' '.__('ago').'.';
} else {
$table_status->data[1][0] .= __('not executed');
}
}
Update operation is done in config_process.php
This is done in that way so the user can see the changes inmediatly.
If you added a new token, please check config_update_config() in functions_config.php
to add it there.
*/
$table = new StdClass(); $table = new StdClass();
$table->width = '100%'; $table->width = '100%';
@ -44,42 +249,279 @@ $table->size[1] = '30%';
enterprise_hook('enterprise_warnings_history_days'); enterprise_hook('enterprise_warnings_history_days');
$table->data[1][0] = __('Max. days before delete events').ui_print_help_tip(__('If the compaction or purge of the data is more frequent than the events deletion, anomalies in module graphs could appear'), true); $table->data[1][0] = __('Max. days before delete events');
$table->data[1][1] = html_print_input_text('event_purge', $config['event_purge'], '', 5, 5, true); $table->data[1][0] .= ui_print_help_tip(
__('If the compaction or purge of the data is more frequent than the events deletion, anomalies in module graphs could appear'),
true
);
$table->data[1][1] = html_print_input_text(
'event_purge',
$config['event_purge'],
'',
5,
5,
true
);
$table->data[2][0] = __('Max. days before delete traps'); $table->data[2][0] = __('Max. days before delete traps');
$table->data[2][1] = html_print_input_text('trap_purge', $config['trap_purge'], '', 5, 5, true); $table->data[2][1] = html_print_input_text(
'trap_purge',
$config['trap_purge'],
'',
5,
5,
true
);
$table->data[3][0] = __('Max. days before delete audit events'); $table->data[3][0] = __('Max. days before delete audit events');
$table->data[3][1] = html_print_input_text('audit_purge', $config['audit_purge'], '', 5, 5, true); $table->data[3][1] = html_print_input_text(
'audit_purge',
$config['audit_purge'],
'',
5,
5,
true
);
$table->data[4][0] = __('Max. days before delete string data'); $table->data[4][0] = __('Max. days before delete string data');
$table->data[4][1] = html_print_input_text('string_purge', $config['string_purge'], '', 5, 5, true); $table->data[4][1] = html_print_input_text(
'string_purge',
$config['string_purge'],
'',
5,
5,
true
);
$table->data[5][0] = __('Max. days before delete GIS data'); $table->data[5][0] = __('Max. days before delete GIS data');
$table->data[5][1] = html_print_input_text('gis_purge', $config['gis_purge'], '', 5, 5, true); $table->data[5][1] = html_print_input_text(
'gis_purge',
$config['gis_purge'],
'',
5,
5,
true
);
$table->data[6][0] = __('Max. days before purge').ui_print_help_tip(__('Configure a purge period more frequent than a compact data period has no sense'), true); $table->data[6][0] = __('Max. days before purge');
$table->data[6][1] = html_print_input_text('days_purge', $config['days_purge'], '', 5, 5, true); $table->data[6][0] .= ui_print_help_tip(
__('Configure a purge period more frequent than a compact data period has no sense'),
true
);
$table->data[6][1] = html_print_input_text(
'days_purge',
$config['days_purge'],
'',
5,
5,
true
);
$table->data[7][0] = __('Max. days before compact data'); $table->data[7][0] = __('Max. days before compact data');
$table->data[7][1] = html_print_input_text('days_compact', $config['days_compact'], '', 5, 5, true); $table->data[7][1] = html_print_input_text(
'days_compact',
$config['days_compact'],
'',
5,
5,
true
);
$table->data[8][0] = __('Max. days before delete unknown modules'); $table->data[8][0] = __('Max. days before delete unknown modules');
$table->data[8][1] = html_print_input_text('days_delete_unknown', $config['days_delete_unknown'], '', 5, 5, true); $table->data[8][1] = html_print_input_text(
'days_delete_unknown',
$config['days_delete_unknown'],
'',
5,
5,
true
);
$table->data[9][0] = __('Max. days before delete autodisabled agents'); $table->data[9][0] = __('Max. days before delete autodisabled agents');
$table->data[9][1] = html_print_input_text('days_autodisable_deletion', $config['days_autodisable_deletion'], '', 5, 5, true); $table->data[9][1] = html_print_input_text(
'days_autodisable_deletion',
$config['days_autodisable_deletion'],
'',
5,
5,
true
);
$table->data[10][0] = __('Retention period of past special days').ui_print_help_tip(__('This number is days to keep past special days. 0 means never remove.'), true); $table->data[10][0] = __('Retention period of past special days');
$table->data[10][1] = html_print_input_text('num_past_special_days', $config['num_past_special_days'], '', 5, 5, true); $table->data[10][0] .= ui_print_help_tip(
__('This number is days to keep past special days. 0 means never remove.'),
true
);
$table->data[10][1] = html_print_input_text(
'num_past_special_days',
$config['num_past_special_days'],
'',
5,
5,
true
);
$table->data[11][0] = __('Max. macro data fields').ui_print_help_tip(__('Number of macro fields in alerts and templates between 1 and 15'), true); $table->data[11][0] = __('Max. macro data fields');
$table->data[11][1] = html_print_input_text('max_macro_fields', $config['max_macro_fields'], '', 5, 5, true, false, false, 'onChange="change_macro_fields()"'); $table->data[11][0] .= ui_print_help_tip(
__('Number of macro fields in alerts and templates between 1 and 15'),
true
);
$table->data[11][1] = html_print_input_text(
'max_macro_fields',
$config['max_macro_fields'],
'',
5,
5,
true,
false,
false,
'onChange="change_macro_fields()"'
);
if (enterprise_installed()) { if (enterprise_installed()) {
$table->data[12][0] = __('Max. days before delete inventory data'); $table->data[12][0] = __('Max. days before delete inventory data');
$table->data[12][1] = html_print_input_text('inventory_purge', $config['inventory_purge'], '', 5, 5, true); $table->data[12][1] = html_print_input_text(
'inventory_purge',
$config['inventory_purge'],
'',
5,
5,
true
);
}
if ($config['history_db_enabled'] == 1) {
if (! isset($config['history_db_connection'])
|| $config['history_db_connection'] === false
) {
$config['history_db_connection'] = db_connect(
$config['history_db_host'],
$config['history_db_name'],
$config['history_db_user'],
io_output_password($config['history_db_pass']),
$config['history_db_port'],
false
);
}
$history_connect = @mysql_db_process_sql(
'SELECT 1 FROM tconfig',
'affected_rows',
$config['history_db_connection'],
false
);
$config_history = false;
if ($history_connect !== false) {
if ($config['history_db_connection'] != false) {
$config_history_array = mysql_db_process_sql(
'SELECT * FROM tconfig',
'affected_rows',
$config['history_db_connection'],
false
);
if (isset($config_history_array) && is_array($config_history_array)) {
foreach ($config_history_array as $key => $value) {
$config_history[$value['token']] = $value['value'];
}
}
}
} else {
echo ui_print_error_message(
__('The tconfig table does not exist in the historical database')
);
}
if ($config_history === false) {
$config_history = [];
$config_history['days_purge'] = 180;
$config_history['days_compact'] = 120;
$config_history['step_compact'] = 1;
$config_history['event_purge'] = 180;
$config_history['string_purge'] = 180;
}
$table_historical = new StdClass();
$table_historical->width = '100%';
$table_historical->class = 'databox filters';
$table_historical->data = [];
$table_historical->style[0] = 'font-weight: bold';
$table_historical->size[0] = '70%';
$table_historical->size[1] = '30%';
enterprise_hook('enterprise_warnings_history_days');
$table_historical->data[0][0] = __('Max. days before purge');
$table_historical->data[0][0] .= ui_print_help_tip(
__('Configure a purge period more frequent than a compact data period has no sense'),
true
);
$table_historical->data[0][1] = html_print_input_text(
'historical_days_purge',
$config_history['days_purge'],
'',
5,
5,
true
);
$table_historical->data[1][0] = __('Max. days before compact data');
$table_historical->data[1][1] = html_print_input_text(
'historical_days_compact',
$config_history['days_compact'],
'',
5,
5,
true
);
$table_historical->data[2][0] = __('Compact interpolation in hours (1 Fine-20 bad)');
$table_historical->data[2][0] .= ui_print_help_tip(
__('Data will be compacted in intervals of the specified length.'),
true
);
$table_historical->data[2][1] = html_print_input_text(
'historical_step_compact',
$config_history['step_compact'],
'',
5,
5,
true
);
$table_historical->data[3][0] = __('Max. days before delete events');
$table_historical->data[3][0] .= ui_print_help_tip(
__('If the compaction or purge of the data is more frequent than the events deletion, anomalies in module graphs could appear'),
true
);
$table_historical->data[3][1] = html_print_input_text(
'historical_event_purge',
$config_history['event_purge'],
'',
5,
5,
true
);
$table_historical->data[4][0] = __('Max. days before delete string data');
$table_historical->data[4][1] = html_print_input_text(
'historical_string_purge',
$config_history['string_purge'],
'',
5,
5,
true
);
$table_historical->data[4][1] .= html_print_input_hidden(
'historical_history_db_enabled',
0,
true
);
} }
$table_other = new stdClass(); $table_other = new stdClass();
@ -91,7 +533,11 @@ $table_other->style[0] = 'font-weight: bold';
$table_other->size[0] = '70%'; $table_other->size[0] = '70%';
$table_other->size[1] = '30%'; $table_other->size[1] = '30%';
$table_other->data[1][0] = __('Item limit for realtime reports').ui_print_help_tip(__('Set a value too high cause a slowdown on console and a performance penalty in the system.'), true); $table_other->data[1][0] = __('Item limit for realtime reports');
$table_other->data[1][0] .= ui_print_help_tip(
__('Set a value too high cause a slowdown on console and a performance penalty in the system.'),
true
);
$table_other->data[1][1] = html_print_input_text( $table_other->data[1][1] = html_print_input_text(
'report_limit', 'report_limit',
$config['report_limit'], $config['report_limit'],
@ -101,7 +547,11 @@ $table_other->data[1][1] = html_print_input_text(
true true
); );
$table_other->data[2][0] = __('Compact interpolation in hours (1 Fine-20 bad)').ui_print_help_tip(__('Data will be compacted in intervals of the specified length.'), true); $table_other->data[2][0] = __('Compact interpolation in hours (1 Fine-20 bad)');
$table_other->data[2][0] .= ui_print_help_tip(
__('Data will be compacted in intervals of the specified length.'),
true
);
$table_other->data[2][1] = html_print_input_text( $table_other->data[2][1] = html_print_input_text(
'step_compact', 'step_compact',
$config['step_compact'], $config['step_compact'],
@ -122,49 +572,131 @@ $intervals[SECONDS_2WEEK] = __('2 weeks');
$intervals[SECONDS_1MONTH] = __('Last month'); $intervals[SECONDS_1MONTH] = __('Last month');
$table_other->data[3][0] = __('Default hours for event view'); $table_other->data[3][0] = __('Default hours for event view');
$table_other->data[3][1] = html_print_input_text('event_view_hr', $config['event_view_hr'], '', 5, 5, true); $table_other->data[3][1] = html_print_input_text(
'event_view_hr',
$config['event_view_hr'],
'',
5,
5,
true
);
$table_other->data[5][0] = __('Use realtime statistics'); $table_other->data[5][0] = __('Use realtime statistics');
$table_other->data[5][1] = __('Yes').'&nbsp;'.html_print_radio_button('realtimestats', 1, '', $config['realtimestats'], true).'&nbsp;&nbsp;'; $table_other->data[5][1] = html_print_checkbox_toogle_switch(
$table_other->data[5][1] .= __('No').'&nbsp;'.html_print_radio_button('realtimestats', 0, '', $config['realtimestats'], true); 'realtimestats',
1,
$config['realtimestats'],
true
);
$table_other->data[6][0] = __('Batch statistics period (secs)').ui_print_help_tip(__('If realtime statistics are disabled, statistics interval resfresh will be set here.'), true); $table_other->data[6][0] = __('Batch statistics period (secs)');
$table_other->data[6][1] = html_print_input_text('stats_interval', $config['stats_interval'], '', 5, 5, true); $table_other->data[6][0] .= ui_print_help_tip(
__('If realtime statistics are disabled, statistics interval resfresh will be set here.'),
true
);
$table_other->data[6][1] = html_print_input_text(
'stats_interval',
$config['stats_interval'],
'',
5,
5,
true
);
$table_other->data[7][0] = __('Use agent access graph').ui_print_help_icon('agent_access', true); $table_other->data[7][0] = __('Use agent access graph').ui_print_help_icon('agent_access', true);
$table_other->data[7][1] = __('Yes').'&nbsp;'.html_print_radio_button('agentaccess', 1, '', $config['agentaccess'], true).'&nbsp;&nbsp;'; $table_other->data[7][1] = html_print_checkbox_toogle_switch('agentaccess', 1, $config['agentaccess'], true);
$table_other->data[7][1] .= __('No').'&nbsp;'.html_print_radio_button('agentaccess', 0, '', $config['agentaccess'], true);
$table_other->data[8][0] = __('Max. recommended number of files in attachment directory').ui_print_help_tip(__('This number is the maximum number of files in attachment directory. If this number is reached then a warning message will appear in the header notification space.'), true); $table_other->data[8][0] = __('Max. recommended number of files in attachment directory');
$table_other->data[8][1] = html_print_input_text('num_files_attachment', $config['num_files_attachment'], '', 5, 5, true); $table_other->data[8][0] .= ui_print_help_tip(
__('This number is the maximum number of files in attachment directory. If this number is reached then a warning message will appear in the header notification space.'),
true
);
$table_other->data[8][1] = html_print_input_text(
'num_files_attachment',
$config['num_files_attachment'],
'',
5,
5,
true
);
$table_other->data[9][0] = __('Delete not init modules'); $table_other->data[9][0] = __('Delete not init modules');
$table_other->data[9][1] = __('Yes').'&nbsp;'.html_print_radio_button('delete_notinit', 1, '', $config['delete_notinit'], true).'&nbsp;&nbsp;'; $table_other->data[9][1] = html_print_checkbox_toogle_switch('delete_notinit', 1, $config['delete_notinit'], true);
$table_other->data[9][1] .= __('No').'&nbsp;'.html_print_radio_button('delete_notinit', 0, '', $config['delete_notinit'], true);
$table_other->data[10][0] = __('Big Operation Step to purge old data').ui_print_help_tip(__('The number of blocks that a time interval is split into. A bigger value means bigger blocks, which is faster but heavier on the database. Default is 100.'), true); $table_other->data[10][0] = __('Big Operation Step to purge old data');
$table_other->data[10][1] = html_print_input_text('big_operation_step_datos_purge', $config['big_operation_step_datos_purge'], '', 5, 5, true); $table_other->data[10][0] .= ui_print_help_tip(
__('The number of blocks that a time interval is split into. A bigger value means bigger blocks, which is faster but heavier on the database. Default is 100.'),
true
);
$table_other->data[10][1] = html_print_input_text(
'big_operation_step_datos_purge',
$config['big_operation_step_datos_purge'],
'',
5,
5,
true
);
$table_other->data[11][0] = __('Small Operation Step to purge old data').ui_print_help_tip(__('The number of rows that are processed in a single query in deletion. Default is 1000. Increase to 3000-5000 in fast systems. Decrease to 500 or 250 on systems with locks.'), true); $table_other->data[11][0] = __('Small Operation Step to purge old data');
$table_other->data[11][1] = html_print_input_text('small_operation_step_datos_purge', $config['small_operation_step_datos_purge'], '', 5, 5, true); $table_other->data[11][0] .= ui_print_help_tip(
__('The number of rows that are processed in a single query in deletion. Default is 1000. Increase to 3000-5000 in fast systems. Decrease to 500 or 250 on systems with locks.'),
true
);
$table_other->data[11][1] = html_print_input_text(
'small_operation_step_datos_purge',
$config['small_operation_step_datos_purge'],
'',
5,
5,
true
);
$table_other->data[12][0] = __('Graph container - Max. Items').ui_print_help_tip(__('The number of graphs that are viewed in a container. Default is 10 .Increasing this number could lead to performance problems'), true); $table_other->data[12][0] = __('Graph container - Max. Items');
$table_other->data[12][1] = html_print_input_text('max_graph_container', $config['max_graph_container'], '', 5, 5, true); $table_other->data[12][0] .= ui_print_help_tip(
__('The number of graphs that are viewed in a container. Default is 10 .Increasing this number could lead to performance problems'),
true
);
$table_other->data[12][1] = html_print_input_text(
'max_graph_container',
$config['max_graph_container'],
'',
5,
5,
true
);
echo '<form id="form_setup" method="post">'; echo '<form id="form_setup" method="post">';
echo '<fieldset>'; echo '<fieldset>';
echo '<legend>'.__('Database maintenance options').'</legend>'; echo '<legend>'.__('Database maintenance status').'</legend>';
html_print_input_hidden('update_config', 1); html_print_table($table_status);
html_print_table($table);
echo '</fieldset>'; echo '</fieldset>';
echo '<fieldset>'; echo '<fieldset>';
echo '<legend>'.__('Others').'</legend>'; echo '<legend>'.__('Database maintenance options').'</legend>';
html_print_input_hidden('update_config', 1); html_print_table($table);
html_print_table($table_other);
echo '</fieldset>'; echo '</fieldset>';
if ($config['history_db_enabled'] == 1) {
echo '<fieldset>';
echo '<legend>'.__('Historical database maintenance options').'</legend>';
html_print_table($table_historical);
echo '</fieldset>';
}
echo '<fieldset>';
echo '<legend>'.__('Others').'</legend>';
html_print_table($table_other);
echo '</fieldset>';
echo '<div class="action-buttons" style="width: '.$table->width.'">'; echo '<div class="action-buttons" style="width: '.$table->width.'">';
html_print_submit_button(__('Update'), 'update_button', false, 'class="sub upd"'); html_print_input_hidden('update_config', 1);
html_print_submit_button(
__('Update'),
'update_button',
false,
'class="sub upd"'
);
echo '</div>'; echo '</div>';
echo '</form>'; echo '</form>';
?> ?>
@ -173,7 +705,6 @@ echo '</form>';
function change_macro_fields() { function change_macro_fields() {
var value = $("#text-max_macro_fields").val(); var value = $("#text-max_macro_fields").val();
console.log(value);
if (value <= 0) { if (value <= 0) {
$("#text-max_macro_fields").val(1); $("#text-max_macro_fields").val(1);
} }

View File

@ -1,17 +1,32 @@
<?php <?php
/**
* Extension to manage a list of gateways and the node address where they should
* point to.
*
* @category Extensions
* @package Pandora FMS
* @subpackage Community
* @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.
* ============================================================================
*/
// Pandora FMS - http://pandorafms.com
// ==================================================
// Copyright (c) 2005-2011 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.
// Load global vars
global $config; global $config;
check_login(); check_login();
@ -49,7 +64,7 @@ if (! check_acl($config['id_user'], 0, 'PM') && ! is_user_admin($config['id_user
return; return;
} }
// Load enterprise extensions // Load enterprise extensions.
enterprise_include_once('include/functions_setup.php'); enterprise_include_once('include/functions_setup.php');
enterprise_include_once('include/functions_io.php'); enterprise_include_once('include/functions_io.php');
enterprise_include_once('godmode/setup/setup.php'); enterprise_include_once('godmode/setup/setup.php');
@ -63,12 +78,12 @@ enterprise_include_once('godmode/setup/setup.php');
to add it there. to add it there.
*/ */
// Gets section to jump to another section // Gets section to jump to another section.
$section = (string) get_parameter('section', 'general'); $section = (string) get_parameter('section', 'general');
$buttons = []; $buttons = [];
// Draws header // Draws header.
$buttons['general'] = [ $buttons['general'] = [
'active' => false, 'active' => false,
'text' => '<a href="index.php?sec=gsetup&sec2=godmode/setup/setup&amp;section=general">'.html_print_image('images/gm_setup.png', true, ['title' => __('General')]).'</a>', 'text' => '<a href="index.php?sec=gsetup&sec2=godmode/setup/setup&amp;section=general">'.html_print_image('images/gm_setup.png', true, ['title' => __('General')]).'</a>',
@ -114,6 +129,7 @@ if (enterprise_installed()) {
switch ($section) { switch ($section) {
case 'general': case 'general':
default:
$buttons['general']['active'] = true; $buttons['general']['active'] = true;
$subpage = ' &raquo '.__('General'); $subpage = ' &raquo '.__('General');
break; break;
@ -145,7 +161,7 @@ switch ($section) {
break; break;
} }
// Header // Header.
ui_print_page_header(__('Configuration').$subpage, '', false, $help_header, true, $buttons); ui_print_page_header(__('Configuration').$subpage, '', false, $help_header, true, $buttons);
if (isset($config['error_config_update_config'])) { if (isset($config['error_config_update_config'])) {

View File

@ -44,16 +44,14 @@ if (is_ajax()) {
// Fallback to local authentication // Fallback to local authentication
$row = []; $row = [];
$row['name'] = __('Fallback to local authentication').ui_print_help_tip(__('Enable this option if you want to fallback to local authentication when remote (ldap etc...) authentication failed.'), true); $row['name'] = __('Fallback to local authentication').ui_print_help_tip(__('Enable this option if you want to fallback to local authentication when remote (ldap etc...) authentication failed.'), true);
$row['control'] = __('Yes').'&nbsp;'.html_print_radio_button('fallback_local_auth', 1, '', $config['fallback_local_auth'], true).'&nbsp;&nbsp;'; $row['control'] = html_print_checkbox_toogle_switch('fallback_local_auth', 1, $config['fallback_local_auth'], true);
$row['control'] .= __('No').'&nbsp;'.html_print_radio_button('fallback_local_auth', 0, '', $config['fallback_local_auth'], true);
$table->data['fallback_local_auth'] = $row; $table->data['fallback_local_auth'] = $row;
if (enterprise_installed()) { if (enterprise_installed()) {
// Autocreate remote users // Autocreate remote users
$row = []; $row = [];
$row['name'] = __('Autocreate remote users'); $row['name'] = __('Autocreate remote users');
$row['control'] = __('Yes').'&nbsp;'.html_print_radio_button_extended('autocreate_remote_users', 1, '', $config['autocreate_remote_users'], false, '', '', true).'&nbsp;&nbsp;'; $row['control'] = html_print_checkbox_toogle_switch_extended('autocreate_remote_users', 1, $config['autocreate_remote_users'], false, '', '', true).'&nbsp;&nbsp;';
$row['control'] .= __('No').'&nbsp;'.html_print_radio_button_extended('autocreate_remote_users', 0, '', $config['autocreate_remote_users'], false, '', '', true);
$table->data['autocreate_remote_users'] = $row; $table->data['autocreate_remote_users'] = $row;
add_enterprise_auth_autocreate_profiles($table, $type_auth); add_enterprise_auth_autocreate_profiles($table, $type_auth);
@ -91,8 +89,7 @@ if (is_ajax()) {
// Start TLS // Start TLS
$row = []; $row = [];
$row['name'] = __('Start TLS'); $row['name'] = __('Start TLS');
$row['control'] = __('Yes').'&nbsp;'.html_print_radio_button('ldap_start_tls', 1, '', $config['ldap_start_tls'], true).'&nbsp;&nbsp;'; $row['control'] = html_print_checkbox_toogle_switch('ldap_start_tls', 1, $config['ldap_start_tls'], true);
$row['control'] .= __('No').'&nbsp;'.html_print_radio_button('ldap_start_tls', 0, '', $config['ldap_start_tls'], true);
$table->data['ldap_start_tls'] = $row; $table->data['ldap_start_tls'] = $row;
// Base DN // Base DN
@ -137,11 +134,7 @@ if (is_ajax()) {
set_unless_defined($config['double_auth_enabled'], false); set_unless_defined($config['double_auth_enabled'], false);
$row = []; $row = [];
$row['name'] = __('Double authentication').ui_print_help_tip(__('If this option is enabled, the users can use double authentication with their accounts'), true); $row['name'] = __('Double authentication').ui_print_help_tip(__('If this option is enabled, the users can use double authentication with their accounts'), true);
$row['control'] = __('Yes').'&nbsp;'; $row['control'] = html_print_checkbox_toogle_switch('double_auth_enabled', 1, $config['double_auth_enabled'], true);
$row['control'] .= html_print_radio_button('double_auth_enabled', 1, '', $config['double_auth_enabled'], true);
$row['control'] .= '&nbsp;&nbsp;';
$row['control'] .= __('No').'&nbsp;';
$row['control'] .= html_print_radio_button('double_auth_enabled', 0, '', $config['double_auth_enabled'], true);
$table->data['double_auth_enabled'] = $row; $table->data['double_auth_enabled'] = $row;
// Session timeout // Session timeout

View File

@ -48,8 +48,8 @@ $table_enable->style['name'] = 'font-weight: bold';
// Enable eHorus // Enable eHorus
$row = []; $row = [];
$row['name'] = __('Enable eHorus'); $row['name'] = __('Enable eHorus');
$row['control'] = __('Yes').'&nbsp;'.html_print_radio_button('ehorus_enabled', 1, '', $config['ehorus_enabled'], true).'&nbsp;&nbsp;'; $row['control'] = __('Enabled').'&nbsp;'.html_print_radio_button('ehorus_enabled', 1, '', $config['ehorus_enabled'], true).'&nbsp;&nbsp;';
$row['control'] .= __('No').'&nbsp;'.html_print_radio_button('ehorus_enabled', 0, '', $config['ehorus_enabled'], true); $row['control'] .= __('Disabled').'&nbsp;'.html_print_radio_button('ehorus_enabled', 0, '', $config['ehorus_enabled'], true);
$row['button'] = html_print_submit_button(__('Update'), 'update_button', false, 'class="sub upd"', true); $row['button'] = html_print_submit_button(__('Update'), 'update_button', false, 'class="sub upd"', true);
$table_enable->data['ehorus_enabled'] = $row; $table_enable->data['ehorus_enabled'] = $row;

View File

@ -82,16 +82,17 @@ $sources['sql'] = __('Database');
$table->data[9][1] = html_print_select($sources, 'timesource', $config['timesource'], '', '', '', true); $table->data[9][1] = html_print_select($sources, 'timesource', $config['timesource'], '', '', '', true);
$table->data[10][0] = __('Automatic check for updates'); $table->data[10][0] = __('Automatic check for updates');
$table->data[10][1] = __('Yes').'&nbsp;&nbsp;&nbsp;'.html_print_radio_button('autoupdate', 1, '', $config['autoupdate'], true).'&nbsp;&nbsp;'; $table->data[10][1] = html_print_checkbox_toogle_switch('autoupdate', 1, $config['autoupdate'], true);
$table->data[10][1] .= __('No').'&nbsp;&nbsp;&nbsp;'.html_print_radio_button('autoupdate', 0, '', $config['autoupdate'], true);
echo "<div id='dialog' title='".__('Enforce https Information')."' style='display:none;'>";
echo "<p style='text-align: center;'>".__('If SSL is not properly configured you will lose access to ').get_product_name().__(' Console').'</p>';
echo '</div>';
$table->data[11][0] = __('Enforce https'); $table->data[11][0] = __('Enforce https');
$table->data[11][1] = __('Yes').'&nbsp;&nbsp;&nbsp;'.html_print_radio_button_extended('https', 1, '', $config['https'], false, "if (! confirm ('".__('If SSL is not properly configured you will lose access to %s Console. Do you want to continue?', get_product_name())."')) return false", '', true).'&nbsp;&nbsp;'; $table->data[11][1] = html_print_checkbox_toogle_switch_extended('https', 1, $config['https'], false, '', '', true);
$table->data[11][1] .= __('No').'&nbsp;&nbsp;&nbsp;'.html_print_radio_button('https', 0, '', $config['https'], true);
$table->data[12][0] = __('Use cert of SSL'); $table->data[12][0] = __('Use cert of SSL');
$table->data[12][1] = __('Yes').'&nbsp;&nbsp;&nbsp;'.html_print_radio_button_extended('use_cert', 1, '', $config['use_cert'], false, '', '', true).'&nbsp;&nbsp;'; $table->data[12][1] = html_print_checkbox_toogle_switch_extended('use_cert', 1, $config['use_cert'], false, '', '', true);
$table->data[12][1] .= __('No').'&nbsp;&nbsp;&nbsp;'.html_print_radio_button('use_cert', 0, '', $config['use_cert'], true);
$table->rowstyle[13] = 'display: none;'; $table->rowstyle[13] = 'display: none;';
$table->data[13][0] = __('Path of SSL Cert.').ui_print_help_tip(__('Path where you put your cert and name of this cert. Remember your cert only in .pem extension.'), true); $table->data[13][0] = __('Path of SSL Cert.').ui_print_help_tip(__('Path where you put your cert and name of this cert. Remember your cert only in .pem extension.'), true);
@ -113,8 +114,7 @@ $table->data[16][0] = __('API password').ui_print_help_tip(__('Please be careful
$table->data[16][1] = html_print_input_password('api_password', io_output_password($config['api_password']), '', 25, 255, true); $table->data[16][1] = html_print_input_password('api_password', io_output_password($config['api_password']), '', 25, 255, true);
$table->data[17][0] = __('Enable GIS features'); $table->data[17][0] = __('Enable GIS features');
$table->data[17][1] = __('Yes').'&nbsp;&nbsp;&nbsp;'.html_print_radio_button('activate_gis', 1, '', $config['activate_gis'], true).'&nbsp;&nbsp;'; $table->data[17][1] = html_print_checkbox_toogle_switch('activate_gis', 1, $config['activate_gis'], true);
$table->data[17][1] .= __('No').'&nbsp;&nbsp;&nbsp;'.html_print_radio_button('activate_gis', 0, '', $config['activate_gis'], true);
$table->data[19][0] = __('Enable Netflow'); $table->data[19][0] = __('Enable Netflow');
$rbt_disabled = false; $rbt_disabled = false;
@ -123,8 +123,8 @@ if (strtoupper(substr(PHP_OS, 0, 3)) == 'WIN') {
$table->data[19][0] .= ui_print_help_tip(__('Not supported in Windows systems'), true); $table->data[19][0] .= ui_print_help_tip(__('Not supported in Windows systems'), true);
} }
$table->data[19][1] = __('Yes').'&nbsp;&nbsp;&nbsp;'.html_print_radio_button_extended('activate_netflow', 1, '', $config['activate_netflow'], $rbt_disabled, '', '', true).'&nbsp;&nbsp;'; $table->data[19][1] = html_print_checkbox_toogle_switch_extended('activate_netflow', 1, $config['activate_netflow'], $rbt_disabled, '', '', true);
$table->data[19][1] .= __('No').'&nbsp;&nbsp;&nbsp;'.html_print_radio_button_extended('activate_netflow', 0, '', $config['activate_netflow'], $rbt_disabled, '', '', true);
$zone_name = [ $zone_name = [
'Africa' => __('Africa'), 'Africa' => __('Africa'),
@ -202,18 +202,15 @@ $table->data[28][1] = html_print_input_text('public_url', $config['public_url'],
$table->data[29][0] = __('Referer security'); $table->data[29][0] = __('Referer security');
$table->data[29][0] .= ui_print_help_tip(__("If enabled, actively checks if the user comes from %s's URL", get_product_name()), true); $table->data[29][0] .= ui_print_help_tip(__("If enabled, actively checks if the user comes from %s's URL", get_product_name()), true);
$table->data[29][1] = __('Yes').'&nbsp;&nbsp;&nbsp;'.html_print_radio_button('referer_security', 1, '', $config['referer_security'], true).'&nbsp;&nbsp;'; $table->data[29][1] = html_print_checkbox_toogle_switch('referer_security', 1, $config['referer_security'], true);
$table->data[29][1] .= __('No').'&nbsp;&nbsp;&nbsp;'.html_print_radio_button('referer_security', 0, '', $config['referer_security'], true);
$table->data[30][0] = __('Event storm protection'); $table->data[30][0] = __('Event storm protection');
$table->data[30][0] .= ui_print_help_tip(__('If set to yes no events or alerts will be generated, but agents will continue receiving data.'), true); $table->data[30][0] .= ui_print_help_tip(__('If set to yes no events or alerts will be generated, but agents will continue receiving data.'), true);
$table->data[30][1] = __('Yes').'&nbsp;&nbsp;&nbsp;'.html_print_radio_button('event_storm_protection', 1, '', $config['event_storm_protection'], true).'&nbsp;&nbsp;'; $table->data[30][1] = html_print_checkbox_toogle_switch('event_storm_protection', 1, $config['event_storm_protection'], true);
$table->data[30][1] .= __('No').'&nbsp;&nbsp;&nbsp;'.html_print_radio_button('event_storm_protection', 0, '', $config['event_storm_protection'], true);
$table->data[31][0] = __('Command Snapshot').ui_print_help_tip(__('The string modules with several lines show as command output'), true); $table->data[31][0] = __('Command Snapshot').ui_print_help_tip(__('The string modules with several lines show as command output'), true);
$table->data[31][1] = __('Yes').'&nbsp;&nbsp;&nbsp;'.html_print_radio_button('command_snapshot', 1, '', $config['command_snapshot'], true).'&nbsp;&nbsp;'; $table->data[31][1] = html_print_checkbox_toogle_switch('command_snapshot', 1, $config['command_snapshot'], true);
$table->data[31][1] .= __('No').'&nbsp;&nbsp;&nbsp;'.html_print_radio_button('command_snapshot', 0, '', $config['command_snapshot'], true);
$table->data[32][0] = __('Server logs directory').ui_print_help_tip(__('Directory where the server logs are stored.'), true); $table->data[32][0] = __('Server logs directory').ui_print_help_tip(__('Directory where the server logs are stored.'), true);
$table->data[32][1] = html_print_input_text( $table->data[32][1] = html_print_input_text(
@ -253,8 +250,7 @@ $table->data['tutorial_mode'][1] = html_print_select(
$config['past_planned_downtimes'] = isset($config['past_planned_downtimes']) ? $config['past_planned_downtimes'] : 1; $config['past_planned_downtimes'] = isset($config['past_planned_downtimes']) ? $config['past_planned_downtimes'] : 1;
$table->data[34][0] = __('Allow create planned downtimes in the past').ui_print_help_tip(__('The planned downtimes created in the past will affect the SLA reports'), true); $table->data[34][0] = __('Allow create planned downtimes in the past').ui_print_help_tip(__('The planned downtimes created in the past will affect the SLA reports'), true);
$table->data[34][1] = __('Yes').'&nbsp;&nbsp;&nbsp;'.html_print_radio_button('past_planned_downtimes', 1, '', $config['past_planned_downtimes'], true).'&nbsp;&nbsp;'; $table->data[34][1] = html_print_checkbox_toogle_switch('past_planned_downtimes', 1, $config['past_planned_downtimes'], true);
$table->data[34][1] .= __('No').'&nbsp;&nbsp;&nbsp;'.html_print_radio_button('past_planned_downtimes', 0, '', $config['past_planned_downtimes'], true);
$table->data[35][0] = __('Limit for bulk operations').ui_print_help_tip(__('Your PHP environment is set to 1000 max_input_vars. This parameter should have the same value or lower.', ini_get('max_input_vars')), true); $table->data[35][0] = __('Limit for bulk operations').ui_print_help_tip(__('Your PHP environment is set to 1000 max_input_vars. This parameter should have the same value or lower.', ini_get('max_input_vars')), true);
$table->data[35][1] = html_print_input_text( $table->data[35][1] = html_print_input_text(
@ -267,8 +263,7 @@ $table->data[35][1] = html_print_input_text(
); );
$table->data[36][0] = __('Include agents manually disabled'); $table->data[36][0] = __('Include agents manually disabled');
$table->data[36][1] = __('Yes').'&nbsp;&nbsp;&nbsp;'.html_print_radio_button('include_agents', 1, '', $config['include_agents'], true).'&nbsp;&nbsp;'; $table->data[36][1] = html_print_checkbox_toogle_switch('include_agents', 1, $config['include_agents'], true);
$table->data[36][1] .= __('No').'&nbsp;&nbsp;&nbsp;'.html_print_radio_button('include_agents', 0, '', $config['include_agents'], true);
$table->data[37][0] = __('Audit log directory').ui_print_help_tip(__('Directory where audit log is stored.'), true); $table->data[37][0] = __('Audit log directory').ui_print_help_tip(__('Directory where audit log is stored.'), true);
$table->data[37][1] = html_print_input_text('auditdir', io_safe_output($config['auditdir']), '', 30, 100, true); $table->data[37][1] = html_print_input_text('auditdir', io_safe_output($config['auditdir']), '', 30, 100, true);
@ -344,15 +339,24 @@ $(document).ready (function () {
$("#timezone").attr("hidden", false); $("#timezone").attr("hidden", false);
}); });
$("input[name=use_cert]").change(function () { $("input[name=use_cert]").change(function () {
if( $(this).is(":checked") ){ if( $(this).is(":checked") )
var val = $(this).val();
if (val == 1) {
$('#setup_general-13').show(); $('#setup_general-13').show();
}
else else
$('#setup_general-13').hide(); $('#setup_general-13').hide();
}
}); });
$("input[name=https]").change(function (){
if($("input[name=https]").prop('checked')) {
$("#dialog").css({'display': 'inline', 'font-weight': 'bold'}).dialog({
modal: true,
buttons:{
"<?php echo __('Close'); ?>": function(){
$(this).dialog("close");
}
}
});
}
})
}); });
</script> </script>
<?php <?php
@ -372,5 +376,3 @@ function get_sounds()
return $return; return $return;
} }

View File

@ -75,7 +75,7 @@ $table_behaviour->data[$row][1] = html_print_select($values, 'vc_refr', $config[
$row++; $row++;
$table_behaviour->data[$row][0] = __('Paginated module view'); $table_behaviour->data[$row][0] = __('Paginated module view');
$table_behaviour->data[$row][1] = html_print_checkbox( $table_behaviour->data[$row][1] = html_print_checkbox_toogle_switch(
'paginate_module', 'paginate_module',
1, 1,
$config['paginate_module'], $config['paginate_module'],
@ -84,7 +84,7 @@ $table_behaviour->data[$row][1] = html_print_checkbox(
$row++; $row++;
$table_behaviour->data[$row][0] = __('Display data of proc modules in other format'); $table_behaviour->data[$row][0] = __('Display data of proc modules in other format');
$table_behaviour->data[$row][1] = html_print_checkbox( $table_behaviour->data[$row][1] = html_print_checkbox_toogle_switch(
'render_proc', 'render_proc',
1, 1,
$config['render_proc'], $config['render_proc'],
@ -102,7 +102,7 @@ $row++;
// Daniel maya 02/06/2016 Display menu with click --INI // Daniel maya 02/06/2016 Display menu with click --INI
$table_behaviour->data[$row][0] = __('Click to display lateral menus').ui_print_help_tip(__('When enabled, the lateral menus are shown when left clicking them, instead of hovering over them'), true); $table_behaviour->data[$row][0] = __('Click to display lateral menus').ui_print_help_tip(__('When enabled, the lateral menus are shown when left clicking them, instead of hovering over them'), true);
$table_behaviour->data[$row][1] = html_print_checkbox( $table_behaviour->data[$row][1] = html_print_checkbox_toogle_switch(
'click_display', 'click_display',
1, 1,
$config['click_display'], $config['click_display'],
@ -121,7 +121,7 @@ if (enterprise_installed()) {
} }
$table_behaviour->data[$row][0] = __('Classic menu mode').ui_print_help_tip(__('Text menu options always visible, don\'t hide'), true); $table_behaviour->data[$row][0] = __('Classic menu mode').ui_print_help_tip(__('Text menu options always visible, don\'t hide'), true);
$table_behaviour->data[$row][1] = html_print_checkbox( $table_behaviour->data[$row][1] = html_print_checkbox_toogle_switch(
'classic_menu', 'classic_menu',
1, 1,
$config['classic_menu'], $config['classic_menu'],
@ -491,7 +491,7 @@ if (enterprise_installed()) {
if (enterprise_installed()) { if (enterprise_installed()) {
$table_styles->data[$row][0] = __('Disable logo in graphs'); $table_styles->data[$row][0] = __('Disable logo in graphs');
$table_styles->data[$row][1] = html_print_checkbox( $table_styles->data[$row][1] = html_print_checkbox_toogle_switch(
'fixed_graph', 'fixed_graph',
1, 1,
$config['fixed_graph'], $config['fixed_graph'],
@ -507,7 +507,7 @@ if (enterprise_installed()) {
*/ */
$table_styles->data[$row][0] = __('Disable helps'); $table_styles->data[$row][0] = __('Disable helps');
$table_styles->data[$row][1] = html_print_checkbox( $table_styles->data[$row][1] = html_print_checkbox_toogle_switch(
'disable_help', 'disable_help',
1, 1,
$config['disable_help'], $config['disable_help'],
@ -516,7 +516,7 @@ $table_styles->data[$row][1] = html_print_checkbox(
$row++; $row++;
$table_styles->data[$row][0] = __('Fixed header'); $table_styles->data[$row][0] = __('Fixed header');
$table_styles->data[$row][1] = html_print_checkbox( $table_styles->data[$row][1] = html_print_checkbox_toogle_switch(
'fixed_header', 'fixed_header',
1, 1,
$config['fixed_header'], $config['fixed_header'],
@ -525,7 +525,7 @@ $table_styles->data[$row][1] = html_print_checkbox(
$row++; $row++;
$table_styles->data[$row][0] = __('Fixed menu'); $table_styles->data[$row][0] = __('Fixed menu');
$table_styles->data[$row][1] = html_print_checkbox( $table_styles->data[$row][1] = html_print_checkbox_toogle_switch(
'fixed_menu', 'fixed_menu',
1, 1,
$config['fixed_menu'], $config['fixed_menu'],
@ -535,7 +535,7 @@ $row++;
// For 5.1 Autohidden menu feature // For 5.1 Autohidden menu feature
$table_styles->data['autohidden'][0] = __('Autohidden menu'); $table_styles->data['autohidden'][0] = __('Autohidden menu');
$table_styles->data['autohidden'][1] = html_print_checkbox( $table_styles->data['autohidden'][1] = html_print_checkbox_toogle_switch(
'autohidden_menu', 'autohidden_menu',
1, 1,
$config['autohidden_menu'], $config['autohidden_menu'],
@ -543,13 +543,14 @@ $table_styles->data['autohidden'][1] = html_print_checkbox(
); );
$table_styles->data[$row][0] = __('Visual effects and animation'); $table_styles->data[$row][0] = __('Visual effects and animation');
$table_styles->data[$row][1] = html_print_checkbox( $table_styles->data[$row][1] = html_print_checkbox_toogle_switch(
'visual_animation', 'visual_animation',
1, 1,
$config['visual_animation'], $config['visual_animation'],
true true
); );
echo '<fieldset>'; echo '<fieldset>';
echo '<legend>'.__('Style configuration').'</legend>'; echo '<legend>'.__('Style configuration').'</legend>';
html_print_table($table_styles); html_print_table($table_styles);
@ -566,7 +567,7 @@ $table_gis->size[0] = '50%';
$table_gis->data = []; $table_gis->data = [];
$table_gis->data[$row][0] = __('GIS Labels').ui_print_help_tip(__('This enabling this, you get a label with agent name in GIS maps. If you have lots of agents in the map, will be unreadable. Disabled by default.'), true); $table_gis->data[$row][0] = __('GIS Labels').ui_print_help_tip(__('This enabling this, you get a label with agent name in GIS maps. If you have lots of agents in the map, will be unreadable. Disabled by default.'), true);
$table_gis->data[$row][1] = html_print_checkbox( $table_gis->data[$row][1] = html_print_checkbox_toogle_switch(
'gis_label', 'gis_label',
1, 1,
$config['gis_label'], $config['gis_label'],
@ -679,7 +680,7 @@ $table_font->data[$row][1] = html_print_input_text(
$row++; $row++;
$table_font->data[$row][0] = __('Show unit along with value in reports').ui_print_help_tip(__('This enabling this, max, min and avg values will be shown with units.'), true); $table_font->data[$row][0] = __('Show unit along with value in reports').ui_print_help_tip(__('This enabling this, max, min and avg values will be shown with units.'), true);
$table_font->data[$row][1] = html_print_checkbox( $table_font->data[$row][1] = html_print_checkbox_toogle_switch(
'simple_module_value', 'simple_module_value',
1, 1,
$config['simple_module_value'], $config['simple_module_value'],
@ -777,7 +778,7 @@ $table_chars->data[$row][1] = html_print_input_text(
$row++; $row++;
$table_chars->data[$row][0] = __('Use round corners'); $table_chars->data[$row][0] = __('Use round corners');
$table_chars->data[$row][1] = html_print_checkbox( $table_chars->data[$row][1] = html_print_checkbox_toogle_switch(
'round_corner', 'round_corner',
1, 1,
$config['round_corner'], $config['round_corner'],
@ -946,7 +947,7 @@ $table_other->data[$row][0] = __('Show report info with description').ui_print_h
__('Custom report description info. It will be applied to all reports and templates by default.'), __('Custom report description info. It will be applied to all reports and templates by default.'),
true true
); );
$table_other->data[$row][1] = html_print_checkbox( $table_other->data[$row][1] = html_print_checkbox_toogle_switch(
'custom_report_info', 'custom_report_info',
1, 1,
$config['custom_report_info'], $config['custom_report_info'],
@ -966,6 +967,7 @@ $table_other->data[$row][1] = html_print_checkbox(
$config['custom_report_front'], $config['custom_report_front'],
true true
); );
$row++; $row++;
// ---------------------------------------------------------------------- // ----------------------------------------------------------------------
$dirItems = scandir($config['homedir'].'/images/custom_logo'); $dirItems = scandir($config['homedir'].'/images/custom_logo');
@ -1059,7 +1061,7 @@ $table_other->data['custom_report_front-footer'][1] = html_print_textarea(
$table_other->data[$row][0] = __('Show QR Code icon in the header'); $table_other->data[$row][0] = __('Show QR Code icon in the header');
$table_other->data[$row][1] = html_print_checkbox( $table_other->data[$row][1] = html_print_checkbox_toogle_switch(
'show_qr_code_header', 'show_qr_code_header',
1, 1,
$config['show_qr_code_header'], $config['show_qr_code_header'],
@ -1097,7 +1099,7 @@ $table_other->data[$row][0] .= ui_print_help_tip(
__('Show the group name instead the group icon.'), __('Show the group name instead the group icon.'),
true true
); );
$table_other->data[$row][1] = html_print_checkbox( $table_other->data[$row][1] = html_print_checkbox_toogle_switch(
'show_group_name', 'show_group_name',
1, 1,
$config['show_group_name'], $config['show_group_name'],
@ -1440,6 +1442,7 @@ $(document).ready (function () {
.prop('checked'); .prop('checked');
display_custom_report_front(custom_report,$(this).parent().parent().parent().parent().attr('id')); display_custom_report_front(custom_report,$(this).parent().parent().parent().parent().attr('id'));
}); });
$(".databox.filters").css('margin-bottom','-10px');
}); });
// Change the favicon preview when is changed // Change the favicon preview when is changed

View File

@ -140,8 +140,8 @@ if ($enterprise == ENTERPRISE_NOT_HOOK) {
?> ?>
<script> <script>
var open = "<?php echo $open; ?>"; var isopen = "<?php echo $open; ?>";
if(open){ if(isopen){
$(document).ready(function() { $(document).ready(function() {
$('body').append( "<div id='opacidad' style='position:fixed;background:black;opacity:0.6;z-index:1'></div>" ); $('body').append( "<div id='opacidad' style='position:fixed;background:black;opacity:0.6;z-index:1'></div>" );
jQuery.post ("ajax.php", jQuery.post ("ajax.php",
@ -150,6 +150,7 @@ if(open){
"message":"infomodal"}, "message":"infomodal"},
function (data, status) { function (data, status) {
$("#alert_messages").hide () $("#alert_messages").hide ()
.css ("opacity", 1)
.empty () .empty ()
.append (data) .append (data)
.show (); .show ();

View File

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

View File

@ -1754,7 +1754,8 @@ function get_snmpwalk(
$quick_print=0, $quick_print=0,
$base_oid='', $base_oid='',
$snmp_port='', $snmp_port='',
$server_to_exec=0 $server_to_exec=0,
$extra_arguments=''
) { ) {
global $config; global $config;
@ -1805,15 +1806,15 @@ function get_snmpwalk(
case '3': case '3':
switch ($snmp3_security_level) { switch ($snmp3_security_level) {
case 'authNoPriv': case 'authNoPriv':
$command_str = $snmpwalk_bin.' -m ALL -Oa -v 3'.' -u '.escapeshellarg($snmp3_auth_user).' -A '.escapeshellarg($snmp3_auth_pass).' -l '.escapeshellarg($snmp3_security_level).' -a '.escapeshellarg($snmp3_auth_method).' '.escapeshellarg($ip_target).' '.$base_oid.' 2> '.$error_redir_dir; $command_str = $snmpwalk_bin.' -m ALL -Oa '.$extra_arguments.' -v 3'.' -u '.escapeshellarg($snmp3_auth_user).' -A '.escapeshellarg($snmp3_auth_pass).' -l '.escapeshellarg($snmp3_security_level).' -a '.escapeshellarg($snmp3_auth_method).' '.escapeshellarg($ip_target).' '.$base_oid.' 2> '.$error_redir_dir;
break; break;
case 'noAuthNoPriv': case 'noAuthNoPriv':
$command_str = $snmpwalk_bin.' -m ALL -Oa -v 3'.' -u '.escapeshellarg($snmp3_auth_user).' -l '.escapeshellarg($snmp3_security_level).' '.escapeshellarg($ip_target).' '.$base_oid.' 2> '.$error_redir_dir; $command_str = $snmpwalk_bin.' -m ALL -Oa '.$extra_arguments.' -v 3'.' -u '.escapeshellarg($snmp3_auth_user).' -l '.escapeshellarg($snmp3_security_level).' '.escapeshellarg($ip_target).' '.$base_oid.' 2> '.$error_redir_dir;
break; break;
default: default:
$command_str = $snmpwalk_bin.' -m ALL -Oa -v 3'.' -u '.escapeshellarg($snmp3_auth_user).' -A '.escapeshellarg($snmp3_auth_pass).' -l '.escapeshellarg($snmp3_security_level).' -a '.escapeshellarg($snmp3_auth_method).' -x '.escapeshellarg($snmp3_privacy_method).' -X '.escapeshellarg($snmp3_privacy_pass).' '.escapeshellarg($ip_target).' '.$base_oid.' 2> '.$error_redir_dir; $command_str = $snmpwalk_bin.' -m ALL -Oa '.$extra_arguments.' -v 3'.' -u '.escapeshellarg($snmp3_auth_user).' -A '.escapeshellarg($snmp3_auth_pass).' -l '.escapeshellarg($snmp3_security_level).' -a '.escapeshellarg($snmp3_auth_method).' -x '.escapeshellarg($snmp3_privacy_method).' -X '.escapeshellarg($snmp3_privacy_pass).' '.escapeshellarg($ip_target).' '.$base_oid.' 2> '.$error_redir_dir;
break; break;
} }
break; break;
@ -1822,7 +1823,7 @@ function get_snmpwalk(
case '2c': case '2c':
case '1': case '1':
default: default:
$command_str = $snmpwalk_bin.' -m ALL -Oa -v '.escapeshellarg($snmp_version).' -c '.escapeshellarg(io_safe_output($snmp_community)).' '.escapeshellarg($ip_target).' '.$base_oid.' 2> '.$error_redir_dir; $command_str = $snmpwalk_bin.' -m ALL '.$extra_arguments.' -Oa -v '.escapeshellarg($snmp_version).' -c '.escapeshellarg(io_safe_output($snmp_community)).' '.escapeshellarg($ip_target).' '.$base_oid.' 2> '.$error_redir_dir;
break; break;
} }

View File

@ -1700,6 +1700,43 @@ function alerts_get_effective_alert_actions($id_agent_module)
} }
/**
* Validate alerts for the given module.
*
* @param int agent_module_id ID of the module
*/
function alerts_validate_alert_module($agent_module_id)
{
db_process_sql(
sprintf(
'UPDATE talert_template_modules
SET times_fired=0, internal_counter=0
WHERE id_agent_module = %d',
$agent_module_id
)
);
}
/**
* Validate alerts for the given agent.
*
* @param int agent_id ID of the agent
*/
function alerts_validate_alert_agent($agent_id)
{
db_process_sql(
sprintf(
'UPDATE talert_template_modules tm
INNER JOIN tagente_modulo am ON tm.id_agent_module = am.id_agente_modulo
SET tm.times_fired=0, tm.internal_counter=0
WHERE am.id_agente = %d',
$agent_id
)
);
}
/** /**
* Validates an alert id or an array of alert id's. * Validates an alert id or an array of alert id's.
* *

View File

@ -472,11 +472,12 @@ function api_get_module_last_value($idAgentModule, $trash1, $other=';', $returnT
DB column mapping table used by tree_agents (and get module_properties) DB column mapping table used by tree_agents (and get module_properties)
*/ */
// agent related field mappings (output field => column designation for 'tagente') /*
* Agent related field mappings (output field => column designation for 'tagente').
* agent_id is not in this list (because it is mandatory).
* agent_id_group is not in this list.
*/
$agent_field_column_mapping = [ $agent_field_column_mapping = [
/*
agent_id is not in this list (because it is mandatory) */
// agent_id_group is not in this list
'agent_name' => 'nombre as agent_name', 'agent_name' => 'nombre as agent_name',
'agent_direction' => 'direccion as agent_direction', 'agent_direction' => 'direccion as agent_direction',
'agent_comentary' => 'comentarios as agent_comentary', 'agent_comentary' => 'comentarios as agent_comentary',
@ -496,8 +497,8 @@ $agent_field_column_mapping = [
]; ];
// module related field mappings 1/2 (output field => column for 'tagente_modulo') // module related field mappings 1/2 (output field => column for 'tagente_modulo')
// module_id_agent_modulo is not in this list
$module_field_column_mampping = [ $module_field_column_mampping = [
// module_id_agent_modulo is not in this list
'module_id_agent' => 'id_agente as module_id_agent', 'module_id_agent' => 'id_agente as module_id_agent',
'module_id_module_type' => 'id_tipo_modulo as module_id_module_type', 'module_id_module_type' => 'id_tipo_modulo as module_id_module_type',
'module_description' => 'descripcion as module_description', 'module_description' => 'descripcion as module_description',
@ -541,8 +542,8 @@ $module_field_column_mampping = [
]; ];
// module related field mappings 2/2 (output field => column for 'tagente_estado') // module related field mappings 2/2 (output field => column for 'tagente_estado')
// module_id_agent_modulo is not in this list
$estado_fields_to_columns_mapping = [ $estado_fields_to_columns_mapping = [
// module_id_agent_modulo is not in this list
'module_id_agent_state' => 'id_agente_estado as module_id_agent_state', 'module_id_agent_state' => 'id_agente_estado as module_id_agent_state',
'module_data' => 'datos as module_data', 'module_data' => 'datos as module_data',
'module_timestamp' => 'timestamp as module_timestamp', 'module_timestamp' => 'timestamp as module_timestamp',
@ -14609,3 +14610,67 @@ function api_get_users($thrash1, $thrash2, $other, $returnType)
} }
} }
/**
* Resets module counts and alert counts in the agents
*
* @param $id id of the agent you want to synchronize. Add "All" to synchronize all agents
* @param $trash1
* @param $trash2
* @param $trash3
*
* Example:
* api.php?op=set&op2=reset_agent_counts&apipass=1234&user=admin&pass=pandora&id=All
*/
function api_set_reset_agent_counts($id, $thrash1, $thrash2, $thrash3)
{
global $config;
if (!check_acl($config['id_user'], 0, 'AW')) {
returnError('forbidden', 'string');
return;
}
if ($id == '' || !$id) {
returnError('error_parameter', __('Error. Agent cannot be left blank.'));
return;
}
if ($id != 'All') {
$agent = db_get_row_filter('tagente', ['id_agente' => $id]);
if (empty($agent)) {
returnError('error_agent', __('This agent does not exist.'));
return;
} else {
$return = db_process_sql_update(
'tagente',
[
'update_module_count' => 1,
'update_alert_count' => 1,
],
['id_agente' => $id]
);
}
} else {
$return = db_process_sql_update(
'tagente',
[
'update_module_count' => 1,
'update_alert_count' => 1,
]
);
}
$data = __('Successfully updated module/alert count in id agent %d.', $id);
if ($id == 'All') {
$data = __('Successfully updated module/alert count in all agents');
}
if ($return === false) {
returnError('error_reset_agent_counts', 'Could not be updated module/alert counts in id agent %d.', $id);
} else {
returnData('string', ['type' => 'string', 'data' => $data]);
}
}

View File

@ -166,92 +166,30 @@ function events_get_events_grouped(
$groupby_extra = ''; $groupby_extra = '';
} }
switch ($config['dbtype']) { db_process_sql('SET group_concat_max_len = 9999999');
case 'mysql': $event_lj = events_get_secondary_groups_left_join($table);
db_process_sql('SET group_concat_max_len = 9999999'); if ($total) {
$event_lj = events_get_secondary_groups_left_join($table); $sql = "SELECT COUNT(*) FROM (SELECT id_evento
if ($total) { FROM $table te $event_lj
$sql = "SELECT COUNT(*) FROM (SELECT * WHERE 1=1 ".$sql_post.'
FROM $table te $event_lj GROUP BY estado, evento, id_agente, id_agentmodule'.$groupby_extra.') AS t';
WHERE 1=1 ".$sql_post.' } else {
GROUP BY estado, evento, id_agente, id_agentmodule'.$groupby_extra.') AS t'; $sql = "SELECT *, MAX(id_evento) AS id_evento,
} else { GROUP_CONCAT(DISTINCT user_comment SEPARATOR '<br>') AS user_comment,
$sql = "SELECT *, MAX(id_evento) AS id_evento, GROUP_CONCAT(DISTINCT id_evento SEPARATOR ',') AS similar_ids,
GROUP_CONCAT(DISTINCT user_comment SEPARATOR '<br>') AS user_comment, COUNT(id_evento) AS event_rep, MAX(utimestamp) AS timestamp_rep,
GROUP_CONCAT(DISTINCT id_evento SEPARATOR ',') AS similar_ids, MIN(utimestamp) AS timestamp_rep_min,
COUNT(*) AS event_rep, MAX(utimestamp) AS timestamp_rep, (SELECT owner_user FROM $table WHERE id_evento = MAX(te.id_evento)) owner_user,
MIN(utimestamp) AS timestamp_rep_min, (SELECT id_usuario FROM $table WHERE id_evento = MAX(te.id_evento)) id_usuario,
(SELECT owner_user FROM $table WHERE id_evento = MAX(te.id_evento)) owner_user, (SELECT id_agente FROM $table WHERE id_evento = MAX(te.id_evento)) id_agente,
(SELECT id_usuario FROM $table WHERE id_evento = MAX(te.id_evento)) id_usuario, (SELECT criticity FROM $table WHERE id_evento = MAX(te.id_evento)) AS criticity,
(SELECT id_agente FROM $table WHERE id_evento = MAX(te.id_evento)) id_agente, (SELECT ack_utimestamp FROM $table WHERE id_evento = MAX(te.id_evento)) AS ack_utimestamp,
(SELECT criticity FROM $table WHERE id_evento = MAX(te.id_evento)) AS criticity, (SELECT nombre FROM tagente_modulo WHERE id_agente_modulo = te.id_agentmodule) AS module_name
(SELECT ack_utimestamp FROM $table WHERE id_evento = MAX(te.id_evento)) AS ack_utimestamp, FROM $table te $event_lj
(SELECT nombre FROM tagente_modulo WHERE id_agente_modulo = te.id_agentmodule) AS module_name WHERE 1=1 ".$sql_post.'
FROM $table te $event_lj GROUP BY estado, evento, id_agente, id_agentmodule'.$groupby_extra;
WHERE 1=1 ".$sql_post.' $sql .= ' '.events_get_sql_order($sort_field, $order, 2);
GROUP BY estado, evento, id_agente, id_agentmodule'.$groupby_extra; $sql .= ' LIMIT '.$offset.','.$pagination;
$sql .= ' '.events_get_sql_order($sort_field, $order, 2);
$sql .= ' LIMIT '.$offset.','.$pagination;
}
break;
case 'postgresql':
if ($total) {
$sql = "SELECT COUNT(*)
FROM $table te
WHERE 1=1 ".$sql_post.'
GROUP BY estado, evento, id_agentmodule, id_evento, id_agente, id_usuario, id_grupo, estado, timestamp, utimestamp, event_type, id_alert_am, criticity, user_comment, tags, source, id_extra'.$groupby_extra;
} else {
$sql = "SELECT *, MAX(id_evento) AS id_evento, array_to_string(array_agg(DISTINCT user_comment), '<br>') AS user_comment,
array_to_string(array_agg(DISTINCT id_evento), ',') AS similar_ids,
COUNT(*) AS event_rep, MAX(utimestamp) AS timestamp_rep,
MIN(utimestamp) AS timestamp_rep_min,
(SELECT owner_user FROM $table WHERE id_evento = MAX(te.id_evento)) owner_user,
(SELECT id_usuario FROM $table WHERE id_evento = MAX(te.id_evento)) id_usuario,
(SELECT id_agente FROM $table WHERE id_evento = MAX(te.id_evento)) id_agente,
(SELECT criticity FROM $table WHERE id_evento = MAX(te.id_evento)) AS criticity,
(SELECT ack_utimestamp FROM $table WHERE id_evento = MAX(te.id_evento)) AS ack_utimestamp
FROM $table te
WHERE 1=1 ".$sql_post.'
GROUP BY estado, evento, id_agentmodule, id_evento,
id_agente, id_usuario, id_grupo, estado,
timestamp, utimestamp, event_type, id_alert_am,
criticity, user_comment, tags, source, id_extra,
te.critical_instructions,
te.warning_instructions,
te.unknown_instructions,
te.owner_user,
te.ack_utimestamp,
te.custom_data '.$groupby_extra.'
ORDER BY timestamp_rep ASC LIMIT '.$pagination.' OFFSET '.$offset;
}
break;
case 'oracle':
if ($total) {
$sql = "SELECT COUNT(*)
FROM $table te
WHERE 1=1 $sql_post
GROUP BY estado, to_char(evento), id_agentmodule".$groupby_extra.') b ';
} else {
$set = [];
$set['limit'] = $pagination;
$set['offset'] = $offset;
$sql = "SELECT ta.*, tb.event_rep, tb.timestamp_rep, tb.timestamp_rep_min, tb.user_comments, tb.similar_ids
FROM $table ta
INNER JOIN (SELECT MAX(id_evento) AS id_evento, COUNT(id_evento) AS event_rep,
MAX(utimestamp) AS timestamp_rep, MIN(utimestamp) AS timestamp_rep_min,
TAB_TO_STRING(CAST(COLLECT(TO_CHAR(user_comment) ORDER BY id_evento ASC) AS t_varchar2_tab), '<br>') AS user_comments,
TAB_TO_STRING(CAST(COLLECT(CAST(id_evento AS VARCHAR2(4000)) ORDER BY id_evento ASC) AS t_varchar2_tab)) AS similar_ids
FROM $table te
WHERE 1=1 $sql_post
GROUP BY estado, to_char(evento), id_agentmodule$groupby_extra) tb
ON ta.id_evento = tb.id_evento
ORDER BY tb.timestamp_rep ASC";
$sql = oracle_recode_query($sql, $set);
}
break;
} }
// Extract the events by filter (or not) from db // Extract the events by filter (or not) from db
@ -260,16 +198,6 @@ function events_get_events_grouped(
if ($total) { if ($total) {
return reset($events[0]); return reset($events[0]);
} else { } else {
// Override the column 'user_comment' with the column 'user_comments' when oracle
if (!empty($events) && $config['dbtype'] == 'oracle') {
array_walk(
$events,
function (&$value, $key) {
set_if_defined($value['user_comment'], $value['user_comments']);
}
);
}
return $events; return $events;
} }
} }
@ -4871,6 +4799,10 @@ function events_get_sql_order($sort_field='timestamp', $sort='DESC', $group_rep=
*/ */
function events_get_secondary_groups_left_join($table) function events_get_secondary_groups_left_join($table)
{ {
if (users_is_admin()) {
return '';
}
if ($table == 'tevento') { if ($table == 'tevento') {
return 'LEFT JOIN tagent_secondary_group tasg ON te.id_agente = tasg.id_agent'; return 'LEFT JOIN tagent_secondary_group tasg ON te.id_agente = tasg.id_agent';
} }

View File

@ -2306,6 +2306,89 @@ function html_print_checkbox($name, $value, $checked=false, $return=false, $disa
} }
/**
* Render a checkbox button input toogle switch type. Extended version, use html_print_checkbox_toogle_switch() to simplify.
*
* @param string Input name.
* @param string Input value.
* @param string Set the button to be marked (optional, unmarked by default).
* @param bool Disable the button (optional, button enabled by default).
* @param string Script to execute when onClick event is triggered (optional).
* @param string Optional HTML attributes. It's a free string which will be
* @param bool Whether to return an output string or echo now (optional, echo by default).
*
* @return string HTML code if return parameter is true.
*/
function html_print_checkbox_toogle_switch_extended($name, $value, $checked, $disabled, $script, $attributes, $return=false, $id='')
{
static $idcounter = [];
// If duplicate names exist, it will start numbering. Otherwise it won't
if (isset($idcounter[$name])) {
$idcounter[$name]++;
} else {
$idcounter[$name] = 0;
}
$id_aux = preg_replace('/[^a-z0-9\:\;\-\_]/i', '', $name.($idcounter[$name] ? $idcounter[$name] : ''));
$output = '<label class="toogle_switch"><input name="'.$name.'" type="checkbox" value="'.$value.'" '.($checked ? 'checked="checked"' : '');
if ($id == '') {
$output .= ' id="checkbox-'.$id_aux.'"';
} else {
$output .= ' '.$id.'"';
}
if ($script != '') {
$output .= ' onclick="'.$script.'"';
}
if ($disabled) {
$output .= ' disabled="disabled"';
}
$output .= ' '.$attributes;
$output .= ' /><span class="slider"></span></label>';
$output .= "\n";
if ($return === false) {
echo $output;
}
return $output;
}
/**
* Render a checkbox button input toogle switch type.
*
* @param string Input name.
* @param string Input value.
* @param string Set the button to be marked (optional, unmarked by default).
* @param bool Whether to return an output string or echo now (optional, echo by default).
* @param boolean $disabled Disable the button (optional, button enabled by default).
*
* @return string HTML code if return parameter is true.
*/
function html_print_checkbox_toogle_switch($name, $value, $checked=false, $return=false, $disabled=false, $script='', $disabled_hidden=false)
{
$output = html_print_checkbox_toogle_switch_extended($name, $value, (bool) $checked, $disabled, $script, '', true);
if (!$disabled_hidden) {
$output .= html_print_input_hidden($name.'_sent', 1, true);
}
if ($return === false) {
echo $output;
}
return $output;
}
/** /**
* Prints an image HTML element. * Prints an image HTML element.
* *
@ -2990,4 +3073,3 @@ function html_print_csrf_error()
); );
return true; return true;
} }

View File

@ -541,7 +541,7 @@ function io_input_password($password)
global $config; global $config;
enterprise_include_once('include/functions_crypto.php'); enterprise_include_once('include/functions_crypto.php');
$ciphertext = enterprise_hook('openssl_encrypt_decrypt', ['encrypt', $password]); $ciphertext = enterprise_hook('openssl_encrypt_decrypt', ['encrypt', io_safe_output($password)]);
if ($ciphertext === ENTERPRISE_NOT_HOOK) { if ($ciphertext === ENTERPRISE_NOT_HOOK) {
return $password; return $password;
} }
@ -563,7 +563,7 @@ function io_output_password($password)
global $config; global $config;
enterprise_include_once('include/functions_crypto.php'); enterprise_include_once('include/functions_crypto.php');
$plaintext = enterprise_hook('openssl_encrypt_decrypt', ['decrypt', $password]); $plaintext = enterprise_hook('openssl_encrypt_decrypt', ['decrypt', io_safe_output($password)]);
if ($plaintext === ENTERPRISE_NOT_HOOK) { if ($plaintext === ENTERPRISE_NOT_HOOK) {
return $password; return $password;
} }

View File

@ -372,7 +372,7 @@ function menu_print_menu(&$menu)
} }
// Print out the first level // Print out the first level
$output .= '<li title="'.ucwords(str_replace(['oper-', 'god-'], '', $id)).'" class="'.implode(' ', $classes).' '.$seleccionado.'" id="icon_'.$id.'">'; $output .= '<li title="'.$main['text'].'" class="'.implode(' ', $classes).' '.$seleccionado.'" id="icon_'.$id.'">';
// onclick="location.href=\'index.php?sec='.$mainsec.'&amp;sec2='.$main["sec2"].($main["refr"] ? '&amp;refr='.$main["refr"] : '').'\'">'; // onclick="location.href=\'index.php?sec='.$mainsec.'&amp;sec2='.$main["sec2"].($main["refr"] ? '&amp;refr='.$main["refr"] : '').'\'">';
$length = strlen(__($main['text'])); $length = strlen(__($main['text']));
$padding_top = ( $length >= 18) ? 6 : 12; $padding_top = ( $length >= 18) ? 6 : 12;

View File

@ -329,6 +329,11 @@ function modules_change_disabled($id_agent_module, $new_value=1)
continue; continue;
} }
// Validate alerts for disabled modules.
if ($new_value == 1) {
alerts_validate_alert_module($id_module);
}
$id_agent_changed[] = modules_get_agentmodule_agent($id_module); $id_agent_changed[] = modules_get_agentmodule_agent($id_module);
$id_agent_module_changed[] = $id_module; $id_agent_module_changed[] = $id_module;
} }

View File

@ -1183,12 +1183,11 @@ function reporting_SLA(
} }
} }
// SLA items sorted descending ()
if ($content['top_n'] == 2) { if ($content['top_n'] == 2) {
// SLA items sorted descending ()
arsort($return['data']['']); arsort($return['data']['']);
} } else if ($content['top_n'] == 1) {
// SLA items sorted ascending // SLA items sorted ascending
else if ($content['top_n'] == 1) {
asort($sla_showed_values); asort($sla_showed_values);
} }
@ -6724,7 +6723,7 @@ function reporting_general($report, $content)
'id_agente_modulo', 'id_agente_modulo',
$row['id_agent_module'] $row['id_agent_module']
); );
$id_module_type = db_get_value('id_tipo_modulo', 'tagente_modulo', 'nombre', $mod_name);
if ($content['period'] == 0) { if ($content['period'] == 0) {
$data_res[$index] = modules_get_last_value($row['id_agent_module']); $data_res[$index] = modules_get_last_value($row['id_agent_module']);
} else { } else {
@ -6771,16 +6770,31 @@ function reporting_general($report, $content)
$agent_name[$index] = $ag_name; $agent_name[$index] = $ag_name;
$module_name[$index] = $mod_name; $module_name[$index] = $mod_name;
$units[$index] = $unit; $units[$index] = $unit;
$id_module_types[$index] = $id_module_type;
$operations[$index] = $row['operation']; $operations[$index] = $row['operation'];
break; break;
case REPORT_GENERAL_GROUP_BY_AGENT: case REPORT_GENERAL_GROUP_BY_AGENT:
$id_module_types[$index] = $id_module_type;
if ($id_module_types[$index] == 2 || $id_module_types[$index] == 6 || $id_module_types[$index] == 9 || $id_module_types[$index] == 18) {
$data_res[$index] = round($data_res[$index], 0, PHP_ROUND_HALF_DOWN);
}
if ($id_module_types[$index] == 2 || $id_module_types[$index] == 6 || $id_module_types[$index] == 9 || $id_module_types[$index] == 18) {
if ($data_res[$index] == 1) {
$data_res[$index] = 'Up';
} else if ($data_res[$index] == 0) {
$data_res[$index] = 'Down';
}
}
if ($data_res[$index] === false) { if ($data_res[$index] === false) {
$return['data'][$ag_name][$mod_name] = null; $return['data'][$ag_name][$mod_name] = null;
} else { } else {
if (!is_numeric($data_res[$index])) { if (!is_numeric($data_res[$index])) {
$return['data'][$ag_name][$mod_name] = $data_res[$index]; $return['data'][$ag_name][$mod_name] = $data_res[$index];
} else { } else {
hd($data_res[$index], true);
$return['data'][$ag_name][$mod_name] = format_for_graph($data_res[$index], 2).' '.$unit; $return['data'][$ag_name][$mod_name] = format_for_graph($data_res[$index], 2).' '.$unit;
} }
} }
@ -6896,7 +6910,7 @@ function reporting_general($report, $content)
$data['module'] = $module_name[$i]; $data['module'] = $module_name[$i];
$data['id_agent_module'] = $id_agent_module[$i]; $data['id_agent_module'] = $id_agent_module[$i];
$data['id_agent'] = agents_get_agent_id_by_module_id($id_agent_module[$i]); $data['id_agent'] = agents_get_agent_id_by_module_id($id_agent_module[$i]);
$data['id_module_type'] = $id_module_types[$i];
$data['operator'] = ''; $data['operator'] = '';
if ($content['period'] != 0) { if ($content['period'] != 0) {
switch ($operations[$i]) { switch ($operations[$i]) {

View File

@ -2629,21 +2629,6 @@ function reporting_html_availability_graph(&$table, $item, $pdf=0)
} }
function get_agent_first_time($agent_name)
{
$id = agents_get_agent_id($agent_name, true);
$utimestamp = db_get_all_rows_sql(
'SELECT utimestamp FROM tagente_datos WHERE id_agente_modulo IN
(SELECT id_agente_modulo FROM tagente_modulo WHERE id_agente = '.$id.')
ORDER BY utimestamp ASC LIMIT 1'
);
$utimestamp = $utimestamp[0]['utimestamp'];
return $utimestamp;
}
function reporting_html_general(&$table, $item) function reporting_html_general(&$table, $item)
{ {
if (!empty($item['data'])) { if (!empty($item['data'])) {
@ -2676,6 +2661,16 @@ function reporting_html_general(&$table, $item)
// End - Order by agent // End - Order by agent
foreach ($item['data'] as $row) { foreach ($item['data'] as $row) {
if ($row['id_module_type'] == 6 || $row['id_module_type'] == 9 || $row['id_module_type'] == 18 || $row['id_module_type'] == 2) {
$row['formated_value'] = round($row['formated_value'], 0, PHP_ROUND_HALF_DOWN);
}
if (($row['id_module_type'] == 6 || $row['id_module_type'] == 9 || $row['id_module_type'] == 18 || $row['id_module_type'] == 2) && $row['formated_value'] == 1) {
$row['formated_value'] = 'Up';
} else if (($row['id_module_type'] == 6 || $row['id_module_type'] == 9 || $row['id_module_type'] == 18 || $row['id_module_type'] == 2) && $row['formated_value'] == 0) {
$row['formated_value'] = 'Down';
}
if ($item['date']['period'] != 0) { if ($item['date']['period'] != 0) {
$table1->data[] = [ $table1->data[] = [
$row['agent'], $row['agent'],
@ -2738,13 +2733,11 @@ function reporting_html_general(&$table, $item)
} }
$list_modules = array_keys($list_modules); $list_modules = array_keys($list_modules);
$table1->width = '99%'; $table1->width = '99%';
$table1->data = []; $table1->data = [];
$table1->head = array_merge([__('Agent')], $list_modules); $table1->head = array_merge([__('Agent')], $list_modules);
foreach ($item['data'] as $agent => $modules) { foreach ($item['data'] as $agent => $modules) {
$row = []; $row = [];
$row['agent'] = $agent; $row['agent'] = $agent;
$table1->style['agent'] = 'text-align: center;'; $table1->style['agent'] = 'text-align: center;';
foreach ($list_modules as $name) { foreach ($list_modules as $name) {
@ -2804,6 +2797,21 @@ function reporting_html_general(&$table, $item)
} }
function get_agent_first_time($agent_name)
{
$id = agents_get_agent_id($agent_name, true);
$utimestamp = db_get_all_rows_sql(
'SELECT utimestamp FROM tagente_datos WHERE id_agente_modulo IN
(SELECT id_agente_modulo FROM tagente_modulo WHERE id_agente = '.$id.')
ORDER BY utimestamp ASC LIMIT 1'
);
$utimestamp = $utimestamp[0]['utimestamp'];
return $utimestamp;
}
function reporting_html_sql(&$table, $item) function reporting_html_sql(&$table, $item)
{ {
if (!$item['correct']) { if (!$item['correct']) {

View File

@ -711,7 +711,7 @@ function update_manager_extract_package()
rrmdir($path_package); rrmdir($path_package);
if ($result != 0) { if ($result == 0) {
db_process_sql_update( db_process_sql_update(
'tconfig', 'tconfig',
[ [

View File

@ -3902,13 +3902,16 @@ function visual_map_translate_agent_status($agent_status)
{ {
switch ($agent_status) { switch ($agent_status) {
case AGENT_STATUS_NORMAL: case AGENT_STATUS_NORMAL:
case AGENT_MODULE_STATUS_NORMAL_ALERT:
default: default:
return VISUAL_MAP_STATUS_NORMAL; return VISUAL_MAP_STATUS_NORMAL;
case AGENT_STATUS_CRITICAL: case AGENT_STATUS_CRITICAL:
case AGENT_MODULE_STATUS_CRITICAL_ALERT:
return VISUAL_MAP_STATUS_CRITICAL_BAD; return VISUAL_MAP_STATUS_CRITICAL_BAD;
case AGENT_STATUS_WARNING: case AGENT_STATUS_WARNING:
case AGENT_MODULE_STATUS_WARNING_ALERT:
return VISUAL_MAP_STATUS_WARNING; return VISUAL_MAP_STATUS_WARNING;
case AGENT_STATUS_NOT_INIT: case AGENT_STATUS_NOT_INIT:

View File

@ -144,7 +144,7 @@ function gd_histogram($width, $height, $mode, $data, $max_value, $font, $title,
foreach ($data as $label => $value) { foreach ($data as $label => $value) {
imagefilledrectangle($image, $leftmargin, $margin_up, (($value / $size_per) + $leftmargin), ($margin_up + $rectangle_height - 1), $colors[$c]); imagefilledrectangle($image, $leftmargin, $margin_up, (($value / $size_per) + $leftmargin), ($margin_up + $rectangle_height - 1), $colors[$c]);
if ($mode != 2) { if ($mode != 2) {
ImageTTFText($image, $fontsize, 0, 0, ($margin_up + 8), $black, $font, $label); imagettftext($image, $fontsize, 0, 0, ($margin_up + 8), $black, $font, $label);
} }
$margin_up += ($rectangle_height + 1); $margin_up += ($rectangle_height + 1);
@ -164,9 +164,9 @@ function gd_histogram($width, $height, $mode, $data, $max_value, $font, $title,
imageline($image, $risk_low, 0, $risk_low, $height, $grey); imageline($image, $risk_low, 0, $risk_low, $height, $grey);
imageline($image, $risk_med, 0, $risk_med, $height, $grey); imageline($image, $risk_med, 0, $risk_med, $height, $grey);
imageline($image, $risk_high, 0, $risk_high, $height, $grey); imageline($image, $risk_high, 0, $risk_high, $height, $grey);
ImageTTFText($image, $fontsize, 0, ($risk_low - 20), $height, $grey, $font, 'Low'); imagettftext($image, $fontsize, 0, ($risk_low - 20), $height, $grey, $font, 'Low');
ImageTTFText($image, $fontsize, 0, ($risk_med - 20), $height, $grey, $font, 'Med.'); imagettftext($image, $fontsize, 0, ($risk_med - 20), $height, $grey, $font, 'Med.');
ImageTTFText($image, $fontsize, 0, ($risk_high - 25), $height, $grey, $font, 'High'); imagettftext($image, $fontsize, 0, ($risk_high - 25), $height, $grey, $font, 'High');
} }
imagepng($image); imagepng($image);
@ -279,7 +279,7 @@ function gd_progress_bubble($width, $height, $progress, $title, $font, $out_of_l
// Write the value // Write the value
$size = imagettfbbox($fontsize, 0, $font, $value_text); $size = imagettfbbox($fontsize, 0, $font, $value_text);
ImageTTFText( imagettftext(
$image, $image,
$fontsize, $fontsize,
0, 0,
@ -409,12 +409,12 @@ function drawRating($rating, $width, $height, $font, $out_of_lim_str, $mode, $fo
if ($rating > 50) { if ($rating > 50) {
if ($rating > 100) { if ($rating > 100) {
ImageTTFText($image, ($fontsize + 2), 0, ($width / 4), (($height / 2) + ($height / 5)), $back, $font, $out_of_lim_str); imagettftext($image, ($fontsize + 2), 0, ($width / 4), (($height / 2) + ($height / 5)), $back, $font, $out_of_lim_str);
} else { } else {
ImageTTFText($image, $fontsize, 0, (($width / 2) - ($width / 10)), (($height / 2) + ($height / 5)), $back, $font, $value_text); imagettftext($image, $fontsize, 0, (($width / 2) - ($width / 10)), (($height / 2) + ($height / 5)), $back, $font, $value_text);
} }
} else { } else {
ImageTTFText($image, $fontsize, 0, (($width / 2) - ($width / 10)), (($height / 2) + ($height / 5)), $text, $font, $value_text); imagettftext($image, $fontsize, 0, (($width / 2) - ($width / 10)), (($height / 2) + ($height / 5)), $text, $font, $value_text);
} }
break; break;

View File

@ -1312,7 +1312,7 @@ function update_last_package(package, version, homeurl) {
$("#box_online .content").html(""); $("#box_online .content").html("");
$("#box_online .loading").show(); $("#box_online .loading").show();
$("#box_online .download_package").show(); $("#box_online .downloading_package").show();
var parameters = {}; var parameters = {};
parameters["page"] = "include/ajax/update_manager.ajax"; parameters["page"] = "include/ajax/update_manager.ajax";
@ -1326,7 +1326,7 @@ function update_last_package(package, version, homeurl) {
parameters, parameters,
function(data) { function(data) {
if (data["in_progress"]) { if (data["in_progress"]) {
$("#box_online .download_package").hide(); $("#box_online .downloading_package").hide();
$("#box_online .content").html(data["message"]); $("#box_online .content").html(data["message"]);
@ -1341,7 +1341,7 @@ function update_last_package(package, version, homeurl) {
parameters2, parameters2,
function(data) { function(data) {
if (data["correct"]) { if (data["correct"]) {
$("#box_online .download_package").hide(); $("#box_online .downloading_package").hide();
$("#box_online .content").html(data["message"]); $("#box_online .content").html(data["message"]);

View File

@ -911,13 +911,6 @@ input.group_item_min[disabled] {
background: #fefefe url(../../images/group_green.disabled.png) no-repeat background: #fefefe url(../../images/group_green.disabled.png) no-repeat
center !important; center !important;
} }
input.color_cloud_min {
background: #fefefe url(../../images/color_cloud_item.png) no-repeat center !important;
}
input.color_cloud_min[disabled] {
background: #fefefe url(../../images/color_cloud_item.disabled.png) no-repeat
center !important;
}
div#cont { div#cont {
position: fixed; position: fixed;
@ -1497,12 +1490,14 @@ table.databox {
} }
.databox > thead > tr > th, .databox > thead > tr > th,
.databox > tbody > tr > th, .databox > tbody > tr > th {
.databox > thead > tr > th a {
padding: 9px 7px; padding: 9px 7px;
font-weight: normal; font-weight: normal;
color: #fff; color: #fff;
} }
.databox > td {
#border-bottom: 1px solid #e2e2e2;
}
.databox > th * { .databox > th * {
color: #fff; color: #fff;
@ -4273,6 +4268,295 @@ div#dialog_messages table th:last-child {
text-align: right; text-align: right;
} }
/* --- JQUERY-UI --- */
.ui-button-text-only .ui-button-text {
font-family: "nunito", sans-serif;
font-size: 9pt;
color: #82b92e;
}
.ui-datepicker .ui-datepicker-title *,
.ui-datepicker th * {
color: white;
}
.ui-datepicker .ui-datepicker-title select,
.ui-datepicker .ui-datepicker-title option {
color: #111 !important;
}
.ui-dialog .ui-dialog-titlebar {
display: inherit;
text-align: center;
padding: 0.4em 1em;
height: 30px;
position: relative;
background-color: #82b92e !important;
}
.ui-dialog .ui-dialog-title {
font-family: "Nunito", sans-serif;
margin: 0.1em 0 !important;
white-space: nowrap !important;
width: 100% !important;
overflow: hidden !important;
text-overflow: ellipsis !important;
font-size: 11pt;
position: relative;
top: 5px;
float: none !important;
}
.ui-dialog .ui-dialog-titlebar-close {
position: absolute !important;
right: 1em !important;
width: 21px !important;
margin: 0px 0 0 0 !important;
padding: 1px !important;
height: 20px !important;
bottom: 30% !important;
top: 20% !important;
}
.ui-dialog .ui-dialog-content {
position: relative !important;
border: 0;
padding: 0.5em 1em !important;
background: none !important;
overflow: auto !important;
margin-bottom: 1em;
}
.ui-dialog .ui-dialog-buttonpane {
text-align: left;
border-width: 1px 0 0 0;
background-image: none;
margin-top: 0.5em;
padding: 0.3em 1em 0.5em 0.4em;
}
.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset {
float: right;
}
.ui-dialog .ui-dialog-buttonpane button {
margin: 0.5em 1em 0.5em 0 !important;
cursor: pointer !important;
background: white !important;
background-color: white !important;
border: 1px solid #82b92e !important;
min-height: 35px !important;
width: 90px !important;
}
.ui-widget-content {
background: #ffffff url(include/styles/images/ui-bg_flat_75_ffffff_40x100.png)
50% 50% repeat-x;
}
.ui-state-default,
.ui-widget-content .ui-state-default,
.ui-widget-header .ui-state-default {
margin-top: 3px;
border: 1px solid #d3d3d3 !important;
border-bottom: 0 !important;
background: #e6e6e6 url(images/ui-bg_glass_75_e6e6e6_1x400.png) 50% 50%
repeat-x !important;
font-weight: normal !important;
color: #555555 !important;
}
.ui-corner-all,
.ui-corner-top,
.ui-corner-left,
.ui-corner-tl {
border-top-left-radius: 0 !important;
}
.ui-corner-all,
.ui-corner-top,
.ui-corner-right,
.ui-corner-tr {
border-top-right-radius: 0 !important;
}
.ui-corner-all,
.ui-corner-bottom,
.ui-corner-left,
.ui-corner-bl {
border-bottom-left-radius: 0 !important;
}
.ui-corner-all,
.ui-corner-bottom,
.ui-corner-right,
.ui-corner-br {
border-bottom-right-radius: 0 !important;
}
#ui-datepicker-div {
border-color: #b1b1b1;
background: #ffffff;
}
.ui-widget-header {
background: #b1b1b1 !important;
color: #ffffff !important;
}
.ui-datepicker-calendar th {
background-color: #3f3f3f;
}
.ui-dialog .ui-widget-header {
background-color: #82b92e;
}
.ui_tpicker_hour,
.ui_tpicker_minute,
.ui_tpicker_second,
.ui-slider-handle {
border: 1px solid #aaaaaa !important;
}
.ui-timepicker-div dd {
margin: 0px 15px 0px 15px;
}
.ui-timepicker-div .ui-datepicker-title {
color: white;
}
.ui-datepicker-buttonpane button {
border-color: #b1b1b1 !important;
}
.ui-datepicker-buttonpane .ui-datepicker-current {
margin-left: 0.2em !important;
}
.ui-dialog .ui-widget-content {
border: 0px !important;
}
.ui-dialog {
box-shadow: 5px 5px 19px #4e4e4e;
border: 0px !important;
padding: 0 !important;
}
.ui-dialog-titlebar {
border: 0px !important;
}
.ui-dialog-titlebar .ui-icon-closethick,
.ui-dialog-titlebar .ui-state-default,
.ui-dialog-titlebar .ui-state-hover,
.ui-dialog-titlebar button {
background: transparent;
border: 0px;
}
.ui-dialog-title {
color: #ffffff;
font-size: 9pt;
}
.ui-widget input,
.ui-widget select,
.ui-widget textarea,
.ui-widget button {
font-family: Verdana, Arial, sans-serif !important;
}
a.ui-button:active,
.ui-button:active,
.ui-button.ui-state-active:hover,
.ui-state-focus .ui-widget-content,
.ui-state-focus .ui-widget-header,
.ui-state-focus .ui-button:hover,
.ui-button:focus {
background: transparent !important;
border: none !important;
}
.ui-state-hover,
.ui-widget-content .ui-state-hover,
.ui-widget-header .ui-state-hover {
border: 1px solid #999999 !important;
border-bottom: 0 !important;
background: #dadada url(images/ui-bg_glass_75_dadada_1x400.png) 50% 50%
repeat-x !important;
}
.ui-state-active,
.ui-widget-content .ui-state-active,
.ui-widget-header .ui-state-active {
border: 1px solid #aaaaaa !important;
border-bottom: 0 !important;
background: #ffffff url(images/ui-bg_glass_65_ffffff_1x400.png) 50% 50%
repeat-x !important;
font-weight: normal !important;
color: #212121 !important;
}
.ui-state-active a,
.ui-state-active a:link,
.ui-state-active a:visited {
color: #212121 !important;
}
ul.ui-front {
z-index: 1000000 !important;
padding-right: 0px !important;
}
ul.ui-front li {
padding: 3px !important;
}
ul.ui-front li:hover {
background-color: #e1e3e1 !important;
}
ul.ui-front li a.ui-menu-item-wrapper {
background: transparent !important;
border: none !important;
}
ul.ui-front li a.ui-menu-item-wrapper span {
padding-left: 5px !important;
}
ul.ui-front li a.ui-menu-item-wrapper:hover {
text-decoration: none !important;
}
/* --- END - JQUERY-UI --- */
.toogle_switch {
position: relative;
display: inline-block;
width: 47px;
height: 24px;
}
.toogle_switch input {
opacity: 0;
width: 0;
height: 0;
}
.slider {
position: absolute;
cursor: pointer;
top: 0;
left: 0;
right: 0;
bottom: 0;
background-color: #ccc;
-webkit-transition: 0.7s;
transition: 0.7s;
border-radius: 34px;
}
.slider:before {
position: absolute;
content: "";
height: 16px;
width: 16px;
left: 4px;
bottom: 4px;
background-color: white;
-webkit-transition: 0.7s;
transition: 0.7s;
border-radius: 50%;
}
input:checked + .slider {
background-color: #82b92e;
}
input:focus + .slider {
box-shadow: 0 0 1px #82b92e;
}
input:checked + .slider:before {
-webkit-transform: translateX(26px);
-ms-transform: translateX(26px);
transform: translateX(26px);
background-color: rgb(197, 235, 192);
}
/* jQuery dialog */ /* jQuery dialog */
.no-close .ui-dialog-titlebar-close { .no-close .ui-dialog-titlebar-close {
display: none; display: none;

View File

@ -1,16 +1,32 @@
<?php <?php
/**
* Extension to manage a list of gateways and the node address where they should
* point to.
*
* @category Extensions
* @package Pandora FMS
* @subpackage Community
* @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.
* ============================================================================
*/
// Pandora FMS - http://pandorafms.com
// ==================================================
// Copyright (c) 2005-2012 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 Lesser General Public License
// as published by the Free Software Foundation; 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.
?> ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html> <html>
@ -113,7 +129,7 @@
<div style='height: 10px'> <div style='height: 10px'>
<?php <?php
$version = '7.0NG.731'; $version = '7.0NG.731';
$build = '190207'; $build = '190215';
$banner = "v$version Build $build"; $banner = "v$version Build $build";
error_reporting(0); error_reporting(0);

View File

@ -19,7 +19,6 @@ if (check_acl($id_user, 0, 'ER')) {
$groups = users_get_groups($id_user, 'EM'); $groups = users_get_groups($id_user, 'EM');
} }
$propagate = db_get_value('propagate', 'tgrupo', 'id_grupo', $id_group); $propagate = db_get_value('propagate', 'tgrupo', 'id_grupo', $id_group);
if ($id_group > 0) { if ($id_group > 0) {
@ -41,24 +40,67 @@ if ($id_group > 0) {
$childrens_ids = array_keys($groups); $childrens_ids = array_keys($groups);
} }
// Group selection if (!isset($date_from)) {
$date_from = '';
}
if (!isset($date_to)) {
$date_to = '';
}
if (($date_from === '') && ($date_to === '')) {
if ($event_view_hr > 0) {
$filter_resume['hours_max'] = $event_view_hr;
$unixtime = (get_system_time() - ($event_view_hr * SECONDS_1HOUR));
$sql_post .= ' AND (utimestamp > '.$unixtime.')';
}
} else {
// Some of this values will have the user's timezone,
// so we need to reverse it to the system's timezone
// before using it into the db.
$fixed_offset = get_fixed_offset();
if (!empty($date_from)) {
if (empty($time_from)) {
$time_from = '00:00:00';
}
$utimestamp_from = (strtotime($date_from.' '.$time_from) - $fixed_offset);
$filter_resume['time_from'] = date(DATE_FORMAT.' '.TIME_FORMAT, $utimestamp_from);
$sql_post .= ' AND (utimestamp >= '.$utimestamp_from.')';
}
if (!empty($date_to)) {
if (empty($time_to)) {
$time_to = '23:59:59';
}
$utimestamp_to = (strtotime($date_to.' '.$time_to) - $fixed_offset);
$filter_resume['time_to'] = date(DATE_FORMAT.' '.TIME_FORMAT, $utimestamp_to);
$sql_post .= ' AND (utimestamp <= '.$utimestamp_to.')';
}
}
// Group selection.
if ($id_group > 0 && in_array($id_group, array_keys($groups))) { if ($id_group > 0 && in_array($id_group, array_keys($groups))) {
if ($propagate) { if ($propagate) {
$childrens_str = implode(',', $childrens_ids); $childrens_str = implode(',', $childrens_ids);
$sql_post = " AND (id_grupo IN ($childrens_str) OR id_group IN ($childrens_str))"; $sql_post .= " AND (id_grupo IN ($childrens_str) OR id_group IN ($childrens_str))";
} else { } else {
// If a group is selected and it's in the groups allowed // If a group is selected and it's in the groups allowed.
$sql_post = " AND (id_grupo = $id_group OR id_group = $id_group)"; $sql_post .= " AND (id_grupo = $id_group OR id_group = $id_group)";
} }
} else { } else {
$sql_post = sprintf( if (!users_is_admin() && !users_can_manage_group_all('ER')) {
' AND (id_grupo IN (%s) OR id_group IN (%s)) ', $sql_post .= sprintf(
implode(',', array_keys($groups)), ' AND (id_grupo IN (%s) OR id_group IN (%s)) ',
implode(',', array_keys($groups)) implode(',', array_keys($groups)),
); implode(',', array_keys($groups))
);
}
} }
// Skip system messages if user is not PM // Skip system messages if user is not PM.
if (!check_acl($id_user, 0, 'PM')) { if (!check_acl($id_user, 0, 'PM')) {
$sql_post .= ' AND id_grupo != 0'; $sql_post .= ' AND id_grupo != 0';
} }
@ -164,7 +206,7 @@ if ($source != '') {
$sql_post .= " AND source LIKE '%$source%'"; $sql_post .= " AND source LIKE '%$source%'";
} }
// In metaconsole mode the agent search is performed by name // In metaconsole mode the agent search is performed by name.
if ($meta) { if ($meta) {
$text_agent = get_parameter('text_agent', ''); $text_agent = get_parameter('text_agent', '');
$id_agent = get_parameter('id_agent', 0); $id_agent = get_parameter('id_agent', 0);
@ -179,7 +221,7 @@ if ($meta) {
break; break;
case -1: case -1:
// Agent doesnt exist. No results will returned // Agent doesnt exist. No results will returned.
$sql_post .= ' AND 1 = 0'; $sql_post .= ' AND 1 = 0';
break; break;
@ -192,9 +234,7 @@ if ($meta) {
if ($meta) { if (!$meta) {
// There is another filter.
} else {
if (!empty($text_module)) { if (!empty($text_module)) {
$filter_resume['module'] = $text_module; $filter_resume['module'] = $text_module;
$sql_post .= " AND id_agentmodule IN ( $sql_post .= " AND id_agentmodule IN (
@ -210,48 +250,7 @@ if ($id_user_ack != '0') {
$sql_post .= " AND id_usuario = '".$id_user_ack."'"; $sql_post .= " AND id_usuario = '".$id_user_ack."'";
} }
if (!isset($date_from)) { // Search by tag.
$date_from = '';
}
if (!isset($date_to)) {
$date_to = '';
}
if (($date_from == '') && ($date_to == '')) {
if ($event_view_hr > 0) {
$filter_resume['hours_max'] = $event_view_hr;
$unixtime = (get_system_time() - ($event_view_hr * SECONDS_1HOUR));
$sql_post .= ' AND (utimestamp > '.$unixtime.')';
}
} else {
// Some of this values will have the user's timezone,
// so we need to reverse it to the system's timezone
// before using it into the db
$fixed_offset = get_fixed_offset();
if (!empty($date_from)) {
if (empty($time_from)) {
$time_from = '00:00:00';
}
$utimestamp_from = (strtotime($date_from.' '.$time_from) - $fixed_offset);
$filter_resume['time_from'] = date(DATE_FORMAT.' '.TIME_FORMAT, $utimestamp_from);
$sql_post .= ' AND (utimestamp >= '.$utimestamp_from.')';
}
if (!empty($date_to)) {
if (empty($time_to)) {
$time_to = '23:59:59';
}
$utimestamp_to = (strtotime($date_to.' '.$time_to) - $fixed_offset);
$filter_resume['time_to'] = date(DATE_FORMAT.' '.TIME_FORMAT, $utimestamp_to);
$sql_post .= ' AND (utimestamp <= '.$utimestamp_to.')';
}
}
// Search by tag
if (!empty($tag_with)) { if (!empty($tag_with)) {
if (!users_is_admin()) { if (!users_is_admin()) {
$user_tags = array_flip(tags_get_tags_for_module_search()); $user_tags = array_flip(tags_get_tags_for_module_search());
@ -305,7 +304,7 @@ if (!empty($tag_without)) {
$sql_post .= ' ) '; $sql_post .= ' ) ';
} }
// Filter/Only alerts // Filter/Only alerts.
if (isset($filter_only_alert)) { if (isset($filter_only_alert)) {
if ($filter_only_alert == 0) { if ($filter_only_alert == 0) {
$filter_resume['alerts'] = $filter_only_alert; $filter_resume['alerts'] = $filter_only_alert;
@ -316,7 +315,7 @@ if (isset($filter_only_alert)) {
} }
} }
// Tags ACLS // Tags ACLS.
if ($id_group > 0 && in_array($id_group, array_keys($groups))) { if ($id_group > 0 && in_array($id_group, array_keys($groups))) {
$group_array = (array) $id_group; $group_array = (array) $id_group;
} else { } else {
@ -335,7 +334,7 @@ if (check_acl($id_user, 0, 'ER')) {
[], [],
true true
); );
// FORCE CHECK SQL "(TAG = tag1 AND id_grupo = 1)" // FORCE CHECK SQL "(TAG = tag1 AND id_grupo = 1)".
} else if (check_acl($id_user, 0, 'EW')) { } else if (check_acl($id_user, 0, 'EW')) {
$tags_acls_condition = tags_get_acl_tags( $tags_acls_condition = tags_get_acl_tags(
$id_user, $id_user,
@ -348,7 +347,7 @@ if (check_acl($id_user, 0, 'ER')) {
[], [],
true true
); );
// FORCE CHECK SQL "(TAG = tag1 AND id_grupo = 1)" // FORCE CHECK SQL "(TAG = tag1 AND id_grupo = 1)".
} else if (check_acl($id_user, 0, 'EM')) { } else if (check_acl($id_user, 0, 'EM')) {
$tags_acls_condition = tags_get_acl_tags( $tags_acls_condition = tags_get_acl_tags(
$id_user, $id_user,
@ -361,14 +360,14 @@ if (check_acl($id_user, 0, 'ER')) {
[], [],
true true
); );
// FORCE CHECK SQL "(TAG = tag1 AND id_grupo = 1)" // FORCE CHECK SQL "(TAG = tag1 AND id_grupo = 1)".
} }
if (($tags_acls_condition != ERR_WRONG_PARAMETERS) && ($tags_acls_condition != ERR_ACL) && ($tags_acls_condition != -110000)) { if (($tags_acls_condition != ERR_WRONG_PARAMETERS) && ($tags_acls_condition != ERR_ACL) && ($tags_acls_condition != -110000)) {
$sql_post .= $tags_acls_condition; $sql_post .= $tags_acls_condition;
} }
// Metaconsole fitlers // Metaconsole fitlers.
if ($meta) { if ($meta) {
if ($server_id) { if ($server_id) {
$filter_resume['server'] = $server_id; $filter_resume['server'] = $server_id;

View File

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

View File

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

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.731"; my $pandora_version = "7.0NG.731";
my $pandora_build = "190207"; my $pandora_build = "190215";
our $VERSION = $pandora_version." ".$pandora_build; our $VERSION = $pandora_version." ".$pandora_build;
our %EXPORT_TAGS = ( 'all' => [ qw() ] ); our %EXPORT_TAGS = ( 'all' => [ qw() ] );

View File

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

View File

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

View File

@ -34,7 +34,7 @@ use PandoraFMS::Config;
use PandoraFMS::DB; use PandoraFMS::DB;
# version: define current version # version: define current version
my $version = "7.0NG.731 PS190207"; my $version = "7.0NG.731 PS190215";
# Pandora server configuration # Pandora server configuration
my %conf; my %conf;
@ -171,11 +171,6 @@ sub pandora_purgedb ($$) {
if (!defined($conf->{'_string_purge'})){ if (!defined($conf->{'_string_purge'})){
$conf->{'_string_purge'} = 7; $conf->{'_string_purge'} = 7;
} }
# Update alert with last_fired older than today - time_threshold
my @templates = get_db_rows ($dbh, 'SELECT t1.id,t1.time_threshold FROM talert_templates t1 WHERE EXISTS ( SELECT * FROM talert_template_modules t2 WHERE t1.id = t2.id_alert_template );');
foreach my $template(@templates) {
db_do($dbh, 'UPDATE talert_template_modules SET times_fired = 0 WHERE id_alert_template = ? AND times_fired > 0 AND last_fired < (? - ?)',$template->{'id'},time(),$template->{'time_threshold'});
}
if ($conf->{'_string_purge'} > 0) { if ($conf->{'_string_purge'} > 0) {
$ulimit_access_timestamp = time() - 86400; $ulimit_access_timestamp = time() - 86400;

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.731 PS190207"; my $version = "7.0NG.731 PS190215";
# save program name for logging # save program name for logging
my $progname = basename($0); my $progname = basename($0);
@ -137,6 +137,7 @@ sub help_screen{
help_screen_line('--delete_cluster_item', '<id_item>', 'Deleting cluster item'); help_screen_line('--delete_cluster_item', '<id_item>', 'Deleting cluster item');
help_screen_line('--get_cluster_status', '<id_cluster>', 'Getting cluster status'); help_screen_line('--get_cluster_status', '<id_cluster>', 'Getting cluster status');
help_screen_line('--set_disabled_and_standby', '<id_agent> <id_node> <value>', 'Overwrite and disable and standby status'); help_screen_line('--set_disabled_and_standby', '<id_agent> <id_node> <value>', 'Overwrite and disable and standby status');
help_screen_line('--reset_agent_counts', '<id_agent>', 'Resets module counts and alert counts in the agents');
print "\nMODULES:\n\n" unless $param ne ''; print "\nMODULES:\n\n" unless $param ne '';
help_screen_line('--create_data_module', "<module_name> <module_type> <agent_name> [<description> <module_group> \n\t <min> <max> <post_process> <interval> <warning_min> <warning_max> <critical_min> <critical_max> \n\t <history_data> <definition_file> <warning_str> <critical_str>\n\t <unknown_events> <ff_threshold> <each_ff> <ff_threshold_normal>\n\t <ff_threshold_warning> <ff_threshold_critical> <ff_timeout> <warning_inverse> <critical_inverse>\n\t <critical_instructions> <warning_instructions> <unknown_instructions>]", 'Add data server module to agent'); help_screen_line('--create_data_module', "<module_name> <module_type> <agent_name> [<description> <module_group> \n\t <min> <max> <post_process> <interval> <warning_min> <warning_max> <critical_min> <critical_max> \n\t <history_data> <definition_file> <warning_str> <critical_str>\n\t <unknown_events> <ff_threshold> <each_ff> <ff_threshold_normal>\n\t <ff_threshold_warning> <ff_threshold_critical> <ff_timeout> <warning_inverse> <critical_inverse>\n\t <critical_instructions> <warning_instructions> <unknown_instructions>]", 'Add data server module to agent');
help_screen_line('--create_web_module', "<module_name> <module_type> <agent_name> [<description> <module_group> \n\t <min> <max> <post_process> <interval> <warning_min> <warning_max> <critical_min> <critical_max> \n\t <history_data> <retries> <requests> <agent_browser_id> <auth_server> <auth_realm> <definition_file>\n\t <proxy_url> <proxy_auth_login> <proxy_auth_password> <warning_str> <critical_str>\n\t <unknown_events> <ff_threshold> <each_ff> <ff_threshold_normal>\n\t <ff_threshold_warning> <ff_threshold_critical> <ff_timeout> <warning_inverse> <critical_inverse>\n\t <critical_instructions> <warning_instructions> <unknown_instructions>].\n\t The valid data types are web_data, web_proc, web_content_data or web_content_string", 'Add web server module to agent'); help_screen_line('--create_web_module', "<module_name> <module_type> <agent_name> [<description> <module_group> \n\t <min> <max> <post_process> <interval> <warning_min> <warning_max> <critical_min> <critical_max> \n\t <history_data> <retries> <requests> <agent_browser_id> <auth_server> <auth_realm> <definition_file>\n\t <proxy_url> <proxy_auth_login> <proxy_auth_password> <warning_str> <critical_str>\n\t <unknown_events> <ff_threshold> <each_ff> <ff_threshold_normal>\n\t <ff_threshold_warning> <ff_threshold_critical> <ff_timeout> <warning_inverse> <critical_inverse>\n\t <critical_instructions> <warning_instructions> <unknown_instructions>].\n\t The valid data types are web_data, web_proc, web_content_data or web_content_string", 'Add web server module to agent');
@ -6375,6 +6376,10 @@ sub pandora_manage_main ($$$) {
param_check($ltotal, 3, 1); param_check($ltotal, 3, 1);
cli_set_disabled_and_standby(); cli_set_disabled_and_standby();
} }
elsif ($param eq '--reset_agent_counts') {
param_check($ltotal, 1, 0);
cli_reset_agent_counts();
}
else { else {
print_log "[ERROR] Invalid option '$param'.\n\n"; print_log "[ERROR] Invalid option '$param'.\n\n";
$param = ''; $param = '';
@ -6978,4 +6983,17 @@ sub cli_set_disabled_and_standby() {
my $exit_code = (defined($result) && "$result" eq "1") ? "1" : "0"; my $exit_code = (defined($result) && "$result" eq "1") ? "1" : "0";
print "\n$exit_code\n"; print "\n$exit_code\n";
} }
##############################################################################
# Resets module counts and alert counts in the agents.
# Related option: --reset_agent_counts
##############################################################################
sub cli_reset_agent_counts() {
my $agent_id = @ARGV[2];
my $result = api_call(\%conf,'set', 'reset_agent_counts', $agent_id);
print "$result \n\n ";
}