Merge remote-tracking branch 'origin/develop' into ent-4697-cicd-pandorafms

Conflicts:
	pandora_server/pandora_server.spec
This commit is contained in:
fbsanchez 2020-01-27 12:38:19 +01:00
commit 50a2d74adb
94 changed files with 2193 additions and 1130 deletions

View File

@ -1,5 +1,5 @@
package: pandorafms-agent-unix package: pandorafms-agent-unix
Version: 7.0NG.742-200110 Version: 7.0NG.742-200127
Architecture: all Architecture: all
Priority: optional Priority: optional
Section: admin Section: admin

View File

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

View File

@ -55,7 +55,7 @@ my $Sem = undef;
my $ThreadSem = undef; my $ThreadSem = undef;
use constant AGENT_VERSION => '7.0NG.742'; use constant AGENT_VERSION => '7.0NG.742';
use constant AGENT_BUILD => '200110'; use constant AGENT_BUILD => '200127';
# 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.742 %define version 7.0NG.742
%define release 200110 %define release 200127
Summary: Pandora FMS Linux agent, PERL version Summary: Pandora FMS Linux agent, PERL version
Name: %{name} Name: %{name}

View File

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

View File

@ -10,7 +10,7 @@
# ********************************************************************** # **********************************************************************
PI_VERSION="7.0NG.742" PI_VERSION="7.0NG.742"
PI_BUILD="200110" PI_BUILD="200127"
OS_NAME=`uname -s` OS_NAME=`uname -s`
FORCE=0 FORCE=0

View File

@ -186,7 +186,7 @@ UpgradeApplicationID
{} {}
Version Version
{200110} {200127}
ViewReadme ViewReadme
{Yes} {Yes}

View File

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

View File

@ -11,7 +11,7 @@ BEGIN
VALUE "LegalCopyright", "Artica ST" VALUE "LegalCopyright", "Artica ST"
VALUE "OriginalFilename", "PandoraAgent.exe" VALUE "OriginalFilename", "PandoraAgent.exe"
VALUE "ProductName", "Pandora FMS Windows Agent" VALUE "ProductName", "Pandora FMS Windows Agent"
VALUE "ProductVersion", "(7.0NG.742(Build 200110))" VALUE "ProductVersion", "(7.0NG.742(Build 200127))"
VALUE "FileVersion", "1.0.0.0" VALUE "FileVersion", "1.0.0.0"
END END
END END

View File

@ -1,5 +1,5 @@
package: pandorafms-console package: pandorafms-console
Version: 7.0NG.742-200110 Version: 7.0NG.742-200127
Architecture: all Architecture: all
Priority: optional Priority: optional
Section: admin Section: admin

View File

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

View File

@ -64,9 +64,11 @@ if (!empty($files)) {
$document_root = str_replace('\\', '/', io_safe_output($_SERVER['DOCUMENT_ROOT'])); $document_root = str_replace('\\', '/', io_safe_output($_SERVER['DOCUMENT_ROOT']));
$file['location'] = str_replace('\\', '/', io_safe_output($file['location'])); $file['location'] = str_replace('\\', '/', io_safe_output($file['location']));
$relative_path = str_replace($document_root, '', $file['location']); $relative_path = str_replace($document_root, '', $file['location']);
$file_path = base64_encode($relative_path); $file_name = explode('/', $file['location']);
$hash = md5($relative_path.$config['dbpass']); $file_decoded = $file_name[(count($file_name) - 1)];
$url = ui_get_full_url("include/get_file.php?file=$file_path&hash=$hash"); $file_path = base64_encode($file_decoded);
$hash = md5($file_path.$config['dbpass']);
$url = ui_get_full_url('include/get_file.php?file='.urlencode($file_path).'&hash='.$hash);
$date_format = ($config['date_format']) ? io_safe_output($config['date_format']) : 'F j, Y - H:m'; $date_format = ($config['date_format']) ? io_safe_output($config['date_format']) : 'F j, Y - H:m';
$data[0] = "<a href=\"$url\" target=\"_blank\">".$file['name'].'</a>'; $data[0] = "<a href=\"$url\" target=\"_blank\">".$file['name'].'</a>';

View File

@ -109,6 +109,6 @@ if (empty($data)) {
} }
echo '{ echo '{
"label": "'.$graph_title.'", "label": "'.htmlspecialchars($graph_title, ENT_QUOTES).'",
"data": [["'.time().'", '.$data.']] "data": [["'.time().'", '.htmlspecialchars($data, ENT_QUOTES).']]
}'; }';

View File

@ -0,0 +1,9 @@
START TRANSACTION;
INSERT INTO `tconfig` (`token`, `value`) VALUES ('custom_module_units', '{"bytes":"bytes","entries":"entries","files":"files","hits":"hits","sessions":"sessions","users":"users","ºC":"ºC","ºF":"ºF"}');
ALTER TABLE `tserver` ADD COLUMN `port` int(5) unsigned NOT NULL default 0;
ALTER TABLE `tmap` ADD COLUMN `id_group_map` INT(10) UNSIGNED NOT NULL default 0;
ALTER TABLE `tevent_filter` MODIFY `severity` TEXT NOT NULL;
ALTER TABLE `treport_content_item` ADD `id_agent_module_failover` int(10) unsigned NOT NULL DEFAULT 0;
COMMIT;

View File

@ -1195,6 +1195,8 @@ CREATE TABLE IF NOT EXISTS `tmap` (
`generation_method` INTEGER UNSIGNED NOT NULL default 0, `generation_method` INTEGER UNSIGNED NOT NULL default 0,
`generated` INTEGER UNSIGNED NOT NULL default 0, `generated` INTEGER UNSIGNED NOT NULL default 0,
`filter` TEXT, `filter` TEXT,
`id_group_map` INT(10) UNSIGNED NOT NULL default 0,
PRIMARY KEY(`id`) PRIMARY KEY(`id`)
) ENGINE = InnoDB DEFAULT CHARSET=utf8; ) ENGINE = InnoDB DEFAULT CHARSET=utf8;
@ -1401,6 +1403,7 @@ ALTER TABLE tevent_filter ADD COLUMN `source` tinytext NOT NULL;
ALTER TABLE tevent_filter ADD COLUMN `id_extra` tinytext NOT NULL; ALTER TABLE tevent_filter ADD COLUMN `id_extra` tinytext NOT NULL;
ALTER TABLE tevent_filter ADD COLUMN `id_source_event` int(10); ALTER TABLE tevent_filter ADD COLUMN `id_source_event` int(10);
ALTER TABLE `tevent_filter` MODIFY COLUMN `user_comment` text NOT NULL; ALTER TABLE `tevent_filter` MODIFY COLUMN `user_comment` text NOT NULL;
ALTER TABLE `tevent_filter` MODIFY COLUMN `severity` text NOT NULL;
-- --------------------------------------------------------------------- -- ---------------------------------------------------------------------
-- Table `tusuario` -- Table `tusuario`
@ -1775,6 +1778,7 @@ ALTER TABLE tserver_export_data MODIFY `module_name` varchar(600) NOT NULL defau
-- Table `tserver` -- Table `tserver`
-- --------------------------------------------------------------------- -- ---------------------------------------------------------------------
ALTER TABLE tserver ADD COLUMN exec_proxy tinyint(1) UNSIGNED NOT NULL default 0; ALTER TABLE tserver ADD COLUMN exec_proxy tinyint(1) UNSIGNED NOT NULL default 0;
ALTER TABLE `tserver` ADD COLUMN `port` int(5) unsigned NOT NULL default 0;
-- --------------------------------------------------------------------- -- ---------------------------------------------------------------------
-- Table `tevent_response` -- Table `tevent_response`
@ -2433,6 +2437,21 @@ CREATE TABLE `tagent_repository` (
ON UPDATE CASCADE ON DELETE CASCADE ON UPDATE CASCADE ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8; ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-- ----------------------------------------------------------------------
-- Table `treport_content_item`
-- ----------------------------------------------------------------------
CREATE TABLE IF NOT EXISTS `treport_content_item` (
`id` INTEGER UNSIGNED NOT NULL auto_increment,
`id_report_content` INTEGER UNSIGNED NOT NULL,
`id_agent_module` int(10) unsigned NOT NULL,
`id_agent_module_failover` int(10) unsigned NOT NULL DEFAULT 0,
`server_name` text,
`operation` text,
PRIMARY KEY(`id`),
FOREIGN KEY (`id_report_content`) REFERENCES treport_content(`id_rc`)
ON UPDATE CASCADE ON DELETE CASCADE
) ENGINE = InnoDB DEFAULT CHARSET=utf8;
-- ---------------------------------------------------------------------- -- ----------------------------------------------------------------------
-- Table `tdeployment_hosts` -- Table `tdeployment_hosts`
-- ---------------------------------------------------------------------- -- ----------------------------------------------------------------------

View File

@ -703,8 +703,7 @@ if ($config['menu_type'] == 'classic') {
}, },
success: function (data) { success: function (data) {
$('#result_order').html(data); $('#result_order').html(data);
console.log(data); },
},
error: function (data) { error: function (data) {
console.error("Fatal error in AJAX call to interpreter order", data) console.error("Fatal error in AJAX call to interpreter order", data)
} }

View File

@ -95,7 +95,12 @@ background:black;opacity:0.1;left:0px;top:0px;width:100%;height:100%;
<img class='modalcontentim' src='<?php echo $config['homeurl']; ?>/images/mysqlerr.png'> <img class='modalcontentim' src='<?php echo $config['homeurl']; ?>/images/mysqlerr.png'>
<div class='modalcontenttex'> <div class='modalcontenttex'>
<?php <?php
echo __('Failure to connect to Database server, please check the configuration file config.php or contact system administrator if you need assistance.'); if ($config['history_db_connection'] === false) {
echo __('Failure to connect to historical database, please check the configuration or contact system administrator if you need assistance.');
} else {
echo __('Failure to connect to Database server, please check the configuration file config.php or contact system administrator if you need assistance.');
}
?> ?>
</div> </div>
</div> </div>
@ -134,4 +139,4 @@ background:black;opacity:0.1;left:0px;top:0px;width:100%;height:100%;
<div id="opacity"></div> <div id="opacity"></div>
</body> </body>
</html> </html>

View File

@ -208,7 +208,7 @@ if (!$new_agent && $alias != '') {
$table_agent_name = '<div class="label_select"><p class="input_label">'.__('Agent name').': '.ui_print_help_tip(__("The agent's name must be the same as the one defined at the console"), true).'</p>'; $table_agent_name = '<div class="label_select"><p class="input_label">'.__('Agent name').': '.ui_print_help_tip(__("The agent's name must be the same as the one defined at the console"), true).'</p>';
$table_agent_name .= '<div class="label_select_parent">'; $table_agent_name .= '<div class="label_select_parent">';
$table_agent_name .= '<div class="label_select_child_left" style="width: 60%;">'.html_print_input_text('agente', $nombre_agente, '', 50, 100, true).'</div>'; $table_agent_name .= '<div class="label_select_child_left" style="width: 60%;">'.html_print_input_text('agente', $nombre_agente, '', 50, 100, true).'</div>';
$table_agent_name .= '<div class="label_select_child_right agent_options_agent_name" style="width: 40%;">'; $table_agent_name .= '<div class="label_select_child_right agent_options_agent_name" style="width: 70%;">';
if ($id_agente) { if ($id_agente) {
$table_agent_name .= '<label>'.__('ID').'</label><input style="width: 50%;" type="text" readonly value="'.$id_agente.'" />'; $table_agent_name .= '<label>'.__('ID').'</label><input style="width: 50%;" type="text" readonly value="'.$id_agente.'" />';

View File

@ -45,3 +45,22 @@ switch ($wizard_section) {
*/ */
require 'agent_wizard.'.$wizard_section.'.php'; require 'agent_wizard.'.$wizard_section.'.php';
?>
<script language="javascript" type="text/javascript">
function satellite_remote_warn(id_satellite, remote)
{
if(!remote)
{
$('#server_to_exec option[value='+id_satellite+']').prop('disabled', true);
$('#satellite_remote_tip').removeAttr("style").show();
}
else
{
$('#satellite_remote_tip').removeAttr("style").hide();
}
}
</script>

View File

@ -738,11 +738,16 @@ $servers_to_exec[0] = __('Local console');
if (enterprise_installed()) { if (enterprise_installed()) {
enterprise_include_once('include/functions_satellite.php'); enterprise_include_once('include/functions_satellite.php');
$rows = get_proxy_servers(true); $rows = get_proxy_servers();
// Check if satellite server has remote configuration enabled.
$satellite_remote = config_agents_has_remote_configuration($id_agent);
foreach ($rows as $row) { foreach ($rows as $row) {
if ($row['server_type'] != 13) { if ($row['server_type'] != 13) {
$s_type = ' (Standard)'; $s_type = ' (Standard)';
} else { } else {
$id_satellite = $row['id_server'];
$s_type = ' (Satellite)'; $s_type = ' (Satellite)';
} }
@ -750,8 +755,16 @@ if (enterprise_installed()) {
} }
} }
$table->data[1][2] = '<b>'.__('Server to execute command').'</b>'; $table->data[1][2] = '<b>'.__('Server to execute command').'</b>'.ui_print_help_icon('agent_snmp_explorer_tab', true);
$table->data[1][3] = html_print_select($servers_to_exec, 'server_to_exec', $server_to_exec, '', '', '', true); $table->data[1][3] = html_print_select(
$servers_to_exec,
'server_to_exec',
$server_to_exec,
'satellite_remote_warn('.$id_satellite.','.$satellite_remote.')',
'',
'',
true
);
$snmp_versions['1'] = 'v. 1'; $snmp_versions['1'] = 'v. 1';
$snmp_versions['2'] = 'v. 2'; $snmp_versions['2'] = 'v. 2';
@ -1020,6 +1033,8 @@ ui_require_javascript_file('pandora_modules');
var separator = '<?php echo $separator; ?>'; var separator = '<?php echo $separator; ?>';
$(document).ready (function () { $(document).ready (function () {
$('#server_to_exec option').trigger('change');
$("#walk_form").submit(function() { $("#walk_form").submit(function() {
$("#oid_loading").show (); $("#oid_loading").show ();
}); });

View File

@ -492,7 +492,7 @@ if (enterprise_installed()) {
} }
} }
$table->data[1][2] = '<b>'.__('Server to execute command').'</b>'; $table->data[1][2] = '<b>'.__('Server to execute command').'</b>'.ui_print_help_icon('agent_snmp_explorer_tab', true);
$table->data[1][2] .= '<span id=satellite_remote_tip>'.ui_print_help_tip(__('In order to use remote executions you need to enable remote execution in satellite server'), true, 'images/tip_help.png', false, 'display:').'</span>'; $table->data[1][2] .= '<span id=satellite_remote_tip>'.ui_print_help_tip(__('In order to use remote executions you need to enable remote execution in satellite server'), true, 'images/tip_help.png', false, 'display:').'</span>';
$table->data[1][4] = html_print_select( $table->data[1][4] = html_print_select(
$servers_to_exec, $servers_to_exec,
@ -734,20 +734,5 @@ function snmp_changed_by_multiple_snmp (event, id_snmp, selected) {
"json"); "json");
} }
function satellite_remote_warn(id_satellite, remote)
{
if(!remote)
{
$('#server_to_exec option[value='+id_satellite+']').prop('disabled', true);
$('#satellite_remote_tip').removeAttr("style").show();
}
else
{
$('#satellite_remote_tip').removeAttr("style").hide();
}
}
/* ]]> */ /* ]]> */
</script> </script>

View File

@ -64,12 +64,22 @@ if ($wmiexplore) {
$processes_name_field = 1; $processes_name_field = 1;
if (enterprise_installed() && (int) $server_to_exec != 0) { if (enterprise_installed() && (int) $server_to_exec != 0) {
$server_data = db_get_row('tserver', 'id_server', $server_to_exec); $server_data = db_get_row('tserver', 'id_server', $server_to_exec);
exec(
'ssh pandora_exec_proxy@'.$server_data['ip_address']." if (empty($server_data['port'])) {
'".$wmi_processes."'", exec(
$output, 'ssh pandora_exec_proxy@'.$server_data['ip_address']."
$rc '".$wmi_processes."'",
); $output,
$rc
);
} else {
exec(
'ssh -p '.$server_data['port'].' pandora_exec_proxy@'.$server_data['ip_address']."
'".$wmi_processes."'",
$output,
$rc
);
}
} else { } else {
exec($wmi_processes, $output); exec($wmi_processes, $output);
} }
@ -110,12 +120,21 @@ if ($wmiexplore) {
'id_server', 'id_server',
$server_to_exec $server_to_exec
); );
if (empty($server_data['port'])) {
exec( exec(
'ssh pandora_exec_proxy@'.$server_data['ip_address']." 'ssh pandora_exec_proxy@'.$server_data['ip_address']."
'".$wmi_services."'", '".$wmi_services."'",
$output, $output,
$rc $rc
); );
} else {
exec(
'ssh -p '.$server_data['port'].' pandora_exec_proxy@'.$server_data['ip_address']."
'".$wmi_services."'",
$output,
$rc
);
}
} else { } else {
exec($wmi_services, $output); exec($wmi_services, $output);
} }
@ -145,12 +164,22 @@ if ($wmiexplore) {
if (enterprise_installed() && (int) $server_to_exec != 0) { if (enterprise_installed() && (int) $server_to_exec != 0) {
$server_data = db_get_row('tserver', 'id_server', $server_to_exec); $server_data = db_get_row('tserver', 'id_server', $server_to_exec);
exec(
'ssh pandora_exec_proxy@'.$server_data['ip_address']." if (empty($server_data['port'])) {
'".$wmi_disks."'", exec(
$output, 'ssh pandora_exec_proxy@'.$server_data['ip_address']."
$rc '".$wmi_disks."'",
); $output,
$rc
);
} else {
exec(
'ssh -p '.$server_data['port'].' pandora_exec_proxy@'.$server_data['ip_address']."
'".$wmi_disks."'",
$output,
$rc
);
}
} else { } else {
exec($wmi_disks, $output); exec($wmi_disks, $output);
} }
@ -469,7 +498,7 @@ if (enterprise_installed()) {
} }
} }
$table->data[2][0] = '<b>'.__('Server to execute command').'</b>'; $table->data[2][0] = '<b>'.__('Server to execute command').'</b>'.ui_print_help_icon('agent_snmp_explorer_tab', true);
$table->data[2][1] = html_print_select( $table->data[2][1] = html_print_select(
$servers_to_exec, $servers_to_exec,
'server_to_exec', 'server_to_exec',

View File

@ -163,8 +163,23 @@ if ($own_info['is_admin'] || check_acl($config['id_user'], 0, 'PM')) {
} }
$table->data[3][0] = __('Threshold'); $table->data[3][0] = __('Threshold');
$table->data[3][1] = html_print_input_text('module_action_threshold', '0', '', 5, 7, true); $table->data[3][1] = html_print_extended_select_for_time(
$table->data[3][1] .= '<span style="margin-left:0.5em;">'.__('seconds').'</span>'; 'module_action_threshold',
0,
'',
'',
'',
false,
true,
false,
true,
'',
false,
false,
'',
false,
true
);
if (!isset($step)) { if (!isset($step)) {
echo '<form class="add_alert_form" method="post">'; echo '<form class="add_alert_form" method="post">';

View File

@ -412,65 +412,56 @@ $url_up_template = $url.'&sort_field=template&sort=up&pure='.$pure;
$url_down_template = $url.'&sort_field=template&sort=down&pure='.$pure; $url_down_template = $url.'&sort_field=template&sort=down&pure='.$pure;
$table = new stdClass(); $table_alert_list = new stdClass();
if (is_metaconsole()) { if (is_metaconsole()) {
$table->class = 'alert_list databox'; $table_alert_list->class = 'alert_list databox';
} else { } else {
$table->class = 'info_table'; $table_alert_list->class = 'info_table';
} }
$table->width = '100%'; $table_alert_list->width = '100%';
$table->cellpadding = 0; $table_alert_list->cellpadding = 0;
$table->cellspacing = 0; $table_alert_list->cellspacing = 0;
$table->size = []; $table_alert_list->size = [];
$table->align = []; $table_alert_list->align = [];
$table->align[0] = 'left'; $table_alert_list->align[0] = 'left';
$table->align[1] = 'left'; $table_alert_list->align[1] = 'left';
$table->align[2] = 'left'; $table_alert_list->align[2] = 'left';
$table->align[3] = 'left'; $table_alert_list->align[3] = 'left';
$table->align[4] = 'left'; $table_alert_list->align[4] = 'left';
$table->head = []; $table_alert_list->head = [];
if (! $id_agente) { if (! $id_agente) {
$table->style = []; $table_alert_list->style = [];
$table->style[0] = 'font-weight: bold;'; $table_alert_list->style[0] = 'font-weight: bold;';
$table->head[0] = __('Agent').ui_get_sorting_arrows($url_up_agente, $url_down_agente, $selectAgentUp, $selectAgentDown); $table_alert_list->head[0] = __('Agent').ui_get_sorting_arrows($url_up_agente, $url_down_agente, $selectAgentUp, $selectAgentDown);
$table->headstyle[0] = 'width: 100%; min-width: 12em;';
$table->headstyle[1] = 'min-width: 15em;';
$table->headstyle[2] = 'min-width: 20em;';
$table->headstyle[3] = 'min-width: 1em;';
$table->headstyle[4] = 'min-width: 15em;';
/*
if ($isFunctionPolicies !== ENTERPRISE_NOT_HOOK) {
$table->size[4] = '8%';
}*/
} else { } else {
$table->head[0] = __('Module').ui_get_sorting_arrows($url_up_module, $url_down_module, $selectModuleUp, $selectModuleDown); $table_alert_list->head[0] = __('Module').ui_get_sorting_arrows($url_up_module, $url_down_module, $selectModuleUp, $selectModuleDown);
$table->headstyle[0] = 'width: 100%; min-width: 15em;';
$table->headstyle[1] = 'min-width: 15em;';
$table->headstyle[2] = 'min-width: 20em;';
$table->headstyle[3] = 'min-width: 1em;';
$table->headstyle[4] = 'min-width: 15em;';
} }
$table->head[1] = __('Template').ui_get_sorting_arrows($url_up_template, $url_down_template, $selectTemplateUp, $selectTemplateDown); $table_alert_list->head[1] = __('Status');
$table->head[2] = __('Actions'); $table_alert_list->head[2] = __('Template').ui_get_sorting_arrows($url_up_template, $url_down_template, $selectTemplateUp, $selectTemplateDown);
$table->head[3] = __('Status'); $table_alert_list->head[3] = __('Actions');
$table->head[4] = "<span title='".__('Operations')."'>".__('Op.').'</span>'; $table_alert_list->head[4] = "<span title='".__('Operations')."'>".__('Op.').'</span>';
$table->valign[0] = 'middle'; $table_alert_list->headstyle[0] = 'min-width: 200px; width:30%;';
$table->valign[1] = 'middle'; $table_alert_list->headstyle[1] = 'min-width: 50px; width:8%';
$table->valign[2] = 'middle'; $table_alert_list->headstyle[2] = 'min-width: 150px; width:22%;';
$table->valign[3] = 'middle'; $table_alert_list->headstyle[3] = 'min-width: 200px; width:30%;';
$table->valign[4] = 'middle'; $table_alert_list->headstyle[4] = 'min-width: 150px; width:10%;';
$table->style[4] = 'min-width:80px'; $table_alert_list->valign[0] = 'middle';
$table_alert_list->valign[1] = 'middle';
$table_alert_list->valign[2] = 'middle';
$table_alert_list->valign[3] = 'middle';
$table_alert_list->valign[4] = 'middle';
$table->data = []; $table_alert_list->cellstyle = [];
$table_alert_list->data = [];
$url .= $sort_params; $url .= $sort_params;
@ -479,14 +470,14 @@ $iterator = 0;
foreach ($simple_alerts as $alert) { foreach ($simple_alerts as $alert) {
if ($alert['disabled']) { if ($alert['disabled']) {
$table->rowstyle[$iterator] = 'font-style: italic; color: #aaaaaa;'; $table_alert_list->rowstyle[$iterator] = 'font-style: italic; color: #aaaaaa;';
$table->style[$iterator][1] = 'font-style: italic; color: #aaaaaa;'; $table_alert_list->style[$iterator][2] = 'font-style: italic; color: #aaaaaa;';
} }
if ($rowPair) { if ($rowPair) {
$table->rowclass[$iterator] = 'rowPair'; $table_alert_list->rowclass[$iterator] = 'rowPair';
} else { } else {
$table->rowclass[$iterator] = 'rowOdd'; $table_alert_list->rowclass[$iterator] = 'rowOdd';
} }
$rowPair = !$rowPair; $rowPair = !$rowPair;
@ -523,38 +514,53 @@ foreach ($simple_alerts as $alert) {
$all_groups = agents_get_all_groups_agent($id_agente); $all_groups = agents_get_all_groups_agent($id_agente);
} }
$module_name = modules_get_agentmodule_name($alert['id_agent_module']); $status = STATUS_ALERT_NOT_FIRED;
$data[0] .= ui_print_truncate_text($module_name, 'module_medium', false, true, true, '[&hellip;]', 'display:block;font-size: 7.2pt').'<br>'; $title = '';
if ($alert['times_fired'] > 0) {
$status = STATUS_ALERT_FIRED;
$title = __('Alert fired').' '.$alert['internal_counter'].' '.__('time(s)');
} else if ($alert['disabled'] > 0) {
$status = STATUS_ALERT_DISABLED;
$title = __('Alert disabled');
} else {
$status = STATUS_ALERT_NOT_FIRED;
$title = __('Alert not fired');
}
$module_name = modules_get_agentmodule_name($alert['id_agent_module']);
$data[0] .= ui_print_truncate_text($module_name, 'module_medium', false, true, true, '[&hellip;]', 'display:block;font-weight:normal;').'<br>';
$data[1] = ui_print_status_image($status, $title, true);
$template_group = db_get_value('id_group', 'talert_templates', 'id', $alert['id_alert_template']); $template_group = db_get_value('id_group', 'talert_templates', 'id', $alert['id_alert_template']);
// The access to the template manage page is necessary have LW permissions on template group // The access to the template manage page is necessary have LW permissions on template group
if (check_acl($config['id_user'], $template_group, 'LW')) { if (check_acl($config['id_user'], $template_group, 'LW')) {
$data[1] .= "<a href='index.php?sec=".$sec.'&sec2=godmode/alerts/configure_alert_template&id='.$alert['id_alert_template']."'>"; $data[2] .= "<a href='index.php?sec=".$sec.'&sec2=godmode/alerts/configure_alert_template&id='.$alert['id_alert_template']."'>";
} }
$data[1] .= ui_print_truncate_text( $data[2] .= ui_print_truncate_text(
alerts_get_alert_template_name($alert['id_alert_template']), alerts_get_alert_template_name($alert['id_alert_template']),
'module_medium', 'module_medium',
false, false,
true, true,
true, true,
'[&hellip;]', '[&hellip;]',
'font-size: 7.1pt' ''
); );
$data[1] .= ' <a class="template_details" $data[2] .= ' <a class="template_details"
href="'.ui_get_full_url(false, false, false, false).'ajax.php?page=godmode/alerts/alert_templates&get_template_tooltip=1&id_template='.$alert['id_alert_template'].'">'; href="'.ui_get_full_url(false, false, false, false).'ajax.php?page=godmode/alerts/alert_templates&get_template_tooltip=1&id_template='.$alert['id_alert_template'].'">';
$data[1] .= html_print_image('images/zoom.png', true, ['id' => 'template-details-'.$alert['id_alert_template'], 'class' => 'img_help']); $data[2] .= html_print_image('images/zoom.png', true, ['id' => 'template-details-'.$alert['id_alert_template'], 'class' => 'img_help action_button_img']);
$data[1] .= '</a> '; $data[2] .= '</a> ';
if (check_acl($config['id_user'], $template_group, 'LW') || check_acl($config['id_user'], $template_group, 'LM')) { if (check_acl($config['id_user'], $template_group, 'LW') || check_acl($config['id_user'], $template_group, 'LM')) {
$data[1] .= '</a>'; $data[2] .= '</a>';
} }
$actions = alerts_get_alert_agent_module_actions($alert['id']); $actions = alerts_get_alert_agent_module_actions($alert['id']);
$data[2] = "<table width='70%'>"; $data[3] = "<table style='width:100%;'>";
// Get and show default actions for this alert // Get and show default actions for this alert
$default_action = db_get_sql( $default_action = db_get_sql(
'SELECT id_alert_action 'SELECT id_alert_action
@ -562,69 +568,74 @@ foreach ($simple_alerts as $alert) {
WHERE id = '.$alert['id_alert_template'] WHERE id = '.$alert['id_alert_template']
); );
if ($default_action != '') { if ($default_action != '') {
$data[2] .= "<tr><td><ul class='action_list'><li>"; $data[3] .= "<tr><td colspan='2'><ul class='action_list'><li>";
$data[2] .= db_get_sql("SELECT name FROM talert_actions WHERE id = $default_action").' <em>('.__('Default').')</em>'; $data[3] .= db_get_sql("SELECT name FROM talert_actions WHERE id = $default_action").' <em>('.__('Default').')</em>';
$data[2] .= ui_print_help_tip(__('The default actions will be executed every time that the alert is fired and no other action is executed'), true); $data[3] .= '</li></ul></td>';
$data[2] .= '</li></ul></td>'; $data[3] .= '</tr>';
$data[2] .= '<td></td>';
$data[2] .= '</tr>';
} }
foreach ($actions as $action_id => $action) { foreach ($actions as $action_id => $action) {
$data[2] .= '<tr>'; $data[3] .= '<tr style="display: grid; grid-template-columns: 1fr 1fr; align-items: center;">';
$data[2] .= '<td>'; $data[3] .= '<td>';
$data[2] .= '<ul class="action_list" style="display:inline;">'; $data[3] .= '<ul class="action_list" style="display:inline;">';
$data[2] .= '<li style="display:inline;">'; $data[3] .= '<li style="display:inline;">';
if ($alert['disabled']) { if ($alert['disabled']) {
$data[2] .= '<font class="action_name" style="font-style: italic; color: #aaaaaa;">'; $data[3] .= '<font class="action_name" style="font-style: italic; color: #aaaaaa;">';
} else { } else {
$data[2] .= '<font class="action_name">'; $data[3] .= '<font class="action_name">';
} }
$data[2] .= ui_print_truncate_text($action['name'], (GENERIC_SIZE_TEXT + 20), false); $data[3] .= ui_print_truncate_text($action['name'], (GENERIC_SIZE_TEXT + 20), false);
$data[2] .= ' <em>('; $data[3] .= ' <em>(';
if ($action['fires_min'] == $action['fires_max']) { if ($action['fires_min'] == $action['fires_max']) {
if ($action['fires_min'] == 0) { if ($action['fires_min'] == 0) {
$data[2] .= __('Always'); $data[3] .= __('Always');
} else { } else {
$data[2] .= __('On').' '.$action['fires_min']; $data[3] .= __('On').' '.$action['fires_min'];
} }
} else if ($action['fires_min'] < $action['fires_max']) { } else if ($action['fires_min'] < $action['fires_max']) {
if ($action['fires_min'] == 0) { if ($action['fires_min'] == 0) {
$data[2] .= __('Until').' '.$action['fires_max']; $data[3] .= __('Until').' '.$action['fires_max'];
} else { } else {
$data[2] .= __('From').' '.$action['fires_min'].' '.__('to').' '.$action['fires_max']; $data[3] .= __('From').' '.$action['fires_min'].' '.__('to').' '.$action['fires_max'];
} }
} else { } else {
$data[2] .= __('From').' '.$action['fires_min']; $data[3] .= __('From').' '.$action['fires_min'];
} }
if ($action['module_action_threshold'] != 0) { if ($action['module_action_threshold'] != 0) {
$data[2] .= ' '.__('Threshold').' '.human_time_description_alerts($action['module_action_threshold'], true, 'tiny'); $data[3] .= ' '.__('Threshold').' '.human_time_description_alerts($action['module_action_threshold'], true, 'tiny');
} }
$data[2] .= ')</em>'; $data[3] .= ')</em>';
$data[2] .= '</font>'; $data[3] .= '</font>';
$data[2] .= '</li>'; $data[3] .= '</li>';
$data[2] .= '</ul>'; $data[3] .= '</ul>';
// Is possible manage actions if have LW permissions in the agent group of the alert module $data[3] .= '</td>';
$data[3] .= '<td style=" display: flex; align-items: center;">';
$data[3] .= ui_print_help_tip(__('The default actions will be executed every time that the alert is fired and no other action is executed'), true);
// Is possible manage actions if have LW permissions in the agent group of the alert module
if (check_acl_one_of_groups($config['id_user'], $all_groups, 'LW')) { if (check_acl_one_of_groups($config['id_user'], $all_groups, 'LW')) {
// ~ $data[2] .= '<form method="post" action="' . $url . '" class="delete_link" style="display: inline; vertical-align: -50%;">'; // ~ $data[2] .= '<form method="post" action="' . $url . '" class="delete_link" style="display: inline; vertical-align: -50%;">';
$data[2] .= '<form method="post" action="'.$url.'" class="delete_link" style="display: inline;">'; $data[3] .= '<form method="post" action="'.$url.'" class="delete_link" style="display: inline;">';
$data[2] .= html_print_input_image( $data[3] .= html_print_input_image(
'delete', 'delete',
'images/cross.png', 'images/cross.png',
1, 1,
'padding:0px;', 'padding:0px; margin-left:5px; margin-right:5px;',
true, true,
['title' => __('Delete action')] [
'title' => __('Delete action'),
'class' => 'action_button_img',
]
); );
$data[2] .= html_print_input_hidden('delete_action', 1, true); $data[3] .= html_print_input_hidden('delete_action', 1, true);
$data[2] .= html_print_input_hidden('id_alert', $alert['id'], true); $data[3] .= html_print_input_hidden('id_alert', $alert['id'], true);
$data[2] .= html_print_input_hidden('id_action', $action_id, true); $data[3] .= html_print_input_hidden('id_action', $action_id, true);
$data[2] .= '</form>'; $data[3] .= '</form>';
$data[2] .= html_print_input_image( $data[3] .= html_print_input_image(
'update_action', 'update_action',
'images/config.png', 'images/config.png',
1, 1,
@ -632,19 +643,20 @@ foreach ($simple_alerts as $alert) {
true, true,
[ [
'title' => __('Update action'), 'title' => __('Update action'),
'class' => 'action_button_img',
'onclick' => 'show_display_update_action(\''.$action['id'].'\',\''.$alert['id'].'\',\''.$alert['id_agent_module'].'\',\''.$action_id.'\',\''.$alert['id_agent_module'].'\')', 'onclick' => 'show_display_update_action(\''.$action['id'].'\',\''.$alert['id'].'\',\''.$alert['id_agent_module'].'\',\''.$action_id.'\',\''.$alert['id_agent_module'].'\')',
] ]
); );
$data[2] .= html_print_input_hidden('id_agent_module', $alert['id_agent_module'], true); $data[3] .= html_print_input_hidden('id_agent_module', $alert['id_agent_module'], true);
} }
$data[2] .= '</td>'; $data[3] .= '</td>';
$data[2] .= '</tr>'; $data[3] .= '</tr>';
} }
$data[2] .= '<div id="update_action-div" style="display:none;text-align:left">'; $data[3] .= '<div id="update_action-div" style="display:none;text-align:left">';
$data[2] .= '</div>'; $data[3] .= '</div>';
$data[2] .= '</table>'; $data[3] .= '</table>';
// Is possible manage actions if have LW permissions in the agent group of the alert module // Is possible manage actions if have LW permissions in the agent group of the alert module
if (check_acl_one_of_groups($config['id_user'], $all_groups, 'LW') || check_acl($config['id_user'], $template_group, 'LM')) { if (check_acl_one_of_groups($config['id_user'], $all_groups, 'LW') || check_acl($config['id_user'], $template_group, 'LM')) {
$own_info = get_user_info($config['id_user']); $own_info = get_user_info($config['id_user']);
@ -660,45 +672,45 @@ foreach ($simple_alerts as $alert) {
$actions = alerts_get_alert_actions_filter(true, 'id_group IN ('.$filter_groups.')'); $actions = alerts_get_alert_actions_filter(true, 'id_group IN ('.$filter_groups.')');
} }
$data[2] .= '<div id="add_action-div-'.$alert['id'].'" style="display:none;text-align:left">'; $data[3] .= '<div id="add_action-div-'.$alert['id'].'" style="display:none;text-align:left">';
$data[2] .= '<form id="add_action_form-'.$alert['id'].'" method="post">'; $data[3] .= '<form id="add_action_form-'.$alert['id'].'" method="post">';
$data[2] .= '<table class="databox_color" style="width:100%">'; $data[3] .= '<table class="databox_color" style="width:100%">';
$data[2] .= html_print_input_hidden('add_action', 1, true); $data[3] .= html_print_input_hidden('add_action', 1, true);
$data[2] .= html_print_input_hidden('id_alert_module', $alert['id'], true); $data[3] .= html_print_input_hidden('id_alert_module', $alert['id'], true);
if (! $id_agente) { if (! $id_agente) {
$data[2] .= '<tr class="datos2">'; $data[3] .= '<tr class="datos2">';
$data[2] .= '<td class="datos2" style="font-weight:bold;padding:6px;">'; $data[3] .= '<td class="datos2" style="font-weight:bold;padding:6px;">';
$data[2] .= __('Agent'); $data[3] .= __('Agent');
$data[2] .= '</td>'; $data[3] .= '</td>';
$data[2] .= '<td class="datos">'; $data[3] .= '<td class="datos">';
$data[2] .= ui_print_truncate_text($agent_name, 'agent_small', false, true, true, '[&hellip;]'); $data[3] .= ui_print_truncate_text($agent_name, 'agent_small', false, true, true, '[&hellip;]');
$data[2] .= '</td>'; $data[3] .= '</td>';
$data[2] .= '</tr>'; $data[3] .= '</tr>';
} }
$data[2] .= '<tr class="datos">'; $data[3] .= '<tr class="datos">';
$data[2] .= '<td class="datos" style="font-weight:bold;padding:6px;">'; $data[3] .= '<td class="datos" style="font-weight:bold;padding:6px;">';
$data[2] .= __('Module'); $data[3] .= __('Module');
$data[2] .= '</td>'; $data[3] .= '</td>';
$data[2] .= '<td class="datos">'; $data[3] .= '<td class="datos">';
$data[2] .= ui_print_truncate_text($module_name, 'module_small', false, true, true, '[&hellip;]'); $data[3] .= ui_print_truncate_text($module_name, 'module_small', false, true, true, '[&hellip;]');
$data[2] .= '</td>'; $data[3] .= '</td>';
$data[2] .= '</tr>'; $data[3] .= '</tr>';
$data[2] .= '<tr class="datos2">'; $data[3] .= '<tr class="datos2">';
$data[2] .= '<td class="datos2" style="font-weight:bold;padding:6px;">'; $data[3] .= '<td class="datos2" style="font-weight:bold;padding:6px;">';
$data[2] .= __('Action'); $data[3] .= __('Action');
$data[2] .= '</td>'; $data[3] .= '</td>';
$data[2] .= '<td class="datos2">'; $data[3] .= '<td class="datos2">';
$data[2] .= html_print_select($actions, 'action_select', '', '', __('None'), 0, true, false, true, '', false, 'width:150px'); $data[3] .= html_print_select($actions, 'action_select', '', '', __('None'), 0, true, false, true, '', false, 'width:150px');
$data[2] .= '</td>'; $data[3] .= '</td>';
$data[2] .= '</tr>'; $data[3] .= '</tr>';
$data[2] .= '<tr class="datos">'; $data[3] .= '<tr class="datos">';
$data[2] .= '<td class="datos" style="font-weight:bold;padding:6px;">'; $data[3] .= '<td class="datos" style="font-weight:bold;padding:6px;">';
$data[2] .= __('Number of alerts match from'); $data[3] .= __('Number of alerts match from');
$data[2] .= '</td>'; $data[3] .= '</td>';
$data[2] .= '<td class="datos">'; $data[3] .= '<td class="datos">';
$data[2] .= html_print_input_text( $data[3] .= html_print_input_text(
'fires_min', 'fires_min',
0, 0,
'', '',
@ -706,8 +718,8 @@ foreach ($simple_alerts as $alert) {
10, 10,
true true
); );
$data[2] .= ' '.__('to').' '; $data[3] .= ' '.__('to').' ';
$data[2] .= html_print_input_text( $data[3] .= html_print_input_text(
'fires_max', 'fires_max',
0, 0,
'', '',
@ -715,47 +727,40 @@ foreach ($simple_alerts as $alert) {
10, 10,
true true
); );
$data[2] .= '</td>'; $data[3] .= '</td>';
$data[2] .= '</tr>'; $data[3] .= '</tr>';
$data[2] .= '<tr class="datos2">'; $data[3] .= '<tr class="datos2">';
$data[2] .= '<td class="datos2" style="font-weight:bold;padding:6px;">'; $data[3] .= '<td class="datos2" style="font-weight:bold;padding:6px;">';
$data[2] .= __('Threshold'); $data[3] .= __('Threshold');
$data[2] .= '</td>'; $data[3] .= '</td>';
$data[2] .= '<td class="datos2">'; $data[3] .= '<td class="datos2">';
$data[2] .= html_print_input_text( $data[3] .= html_print_extended_select_for_time(
'module_action_threshold', 'module_action_threshold',
0,
'', '',
'', '',
4, '',
10, false,
true,
false,
true,
'',
false,
false,
'',
false,
true true
); );
$data[2] .= '</td>'; $data[3] .= '</td>';
$data[2] .= '</tr>'; $data[3] .= '</tr>';
$data[2] .= '</table>'; $data[3] .= '</table>';
$data[2] .= html_print_submit_button(__('Add'), 'addbutton', false, ['class' => 'sub next', 'style' => 'float:right'], true); $data[3] .= html_print_submit_button(__('Add'), 'addbutton', false, ['class' => 'sub next', 'style' => 'float:right'], true);
$data[2] .= '</form>'; $data[3] .= '</form>';
$data[2] .= '</div>'; $data[3] .= '</div>';
} }
$status = STATUS_ALERT_NOT_FIRED; $table_alert_list->cellclass[] = [
$title = ''; 1 => 'action_buttons',
if ($alert['times_fired'] > 0) {
$status = STATUS_ALERT_FIRED;
$title = __('Alert fired').' '.$alert['internal_counter'].' '.__('time(s)');
} else if ($alert['disabled'] > 0) {
$status = STATUS_ALERT_DISABLED;
$title = __('Alert disabled');
} else {
$status = STATUS_ALERT_NOT_FIRED;
$title = __('Alert not fired');
}
$data[3] = ui_print_status_image($status, $title, true);
$table->cellclass[] = [
3 => 'action_buttons',
4 => 'action_buttons', 4 => 'action_buttons',
]; ];
$data[4] = '<form class="disable_alert_form" action="'.$url.'" method="post" style="display: inline;">'; $data[4] = '<form class="disable_alert_form" action="'.$url.'" method="post" style="display: inline;">';
@ -790,11 +795,11 @@ foreach ($simple_alerts as $alert) {
if ($isFunctionPolicies !== ENTERPRISE_NOT_HOOK) { if ($isFunctionPolicies !== ENTERPRISE_NOT_HOOK) {
$policyInfo = policies_is_alert_in_policy2($alert['id'], false); $policyInfo = policies_is_alert_in_policy2($alert['id'], false);
if ($policyInfo === false) { if ($policyInfo === false) {
$data[3] .= ''; $data[1] .= '';
} else { } else {
$img = 'images/policies.png'; $img = 'images/policies.png';
$data[3] .= '&nbsp;&nbsp;<a href="?sec=gmodules&sec2=enterprise/godmode/policies/policies&pure='.$pure.'&id='.$policyInfo['id'].'">'.html_print_image($img, true, ['title' => $policyInfo['name']]).'</a>'; $data[1] .= '&nbsp;&nbsp;<a href="?sec=gmodules&sec2=enterprise/godmode/policies/policies&pure='.$pure.'&id='.$policyInfo['id'].'">'.html_print_image($img, true, ['title' => $policyInfo['name']]).'</a>';
} }
} }
} }
@ -840,11 +845,11 @@ foreach ($simple_alerts as $alert) {
$data[4] .= '</form>'; $data[4] .= '</form>';
} }
array_push($table->data, $data); array_push($table_alert_list->data, $data);
} }
if (isset($data)) { if (isset($data)) {
html_print_table($table); html_print_table($table_alert_list);
if ($id_agente) { if ($id_agente) {
ui_pagination($total, 'index.php?sec=gagente&sec2=godmode/agentes/configurar_agente&tab=alert&id_agente='.$id_agente.$form_params.$sort_params, 0, 0, false, 'offset', true, 'pagination-bottom'); ui_pagination($total, 'index.php?sec=gagente&sec2=godmode/agentes/configurar_agente&tab=alert&id_agente='.$id_agente.$form_params.$sort_params, 0, 0, false, 'offset', true, 'pagination-bottom');
} else { } else {
@ -864,7 +869,7 @@ if (isset($dont_display_alert_create_bttn)) {
} }
if ($display_create && (check_acl($config['id_user'], 0, 'LW') || check_acl($config['id_user'], $template_group, 'LM')) && !$id_cluster) { if ($display_create && (check_acl($config['id_user'], 0, 'LW') || check_acl($config['id_user'], $template_group, 'LM')) && !$id_cluster) {
echo '<div class="action-buttons" style="width: '.$table->width.'">'; echo '<div class="action-buttons" style="width: '.$table_alert_list->width.'">';
echo '<form method="post" action="index.php?sec='.$sec.'&sec2=godmode/alerts/alert_list&tab=builder&pure='.$pure.'">'; echo '<form method="post" action="index.php?sec='.$sec.'&sec2=godmode/alerts/alert_list&tab=builder&pure='.$pure.'">';
html_print_submit_button(__('Create'), 'crtbtn', false, 'class="sub next"'); html_print_submit_button(__('Create'), 'crtbtn', false, 'class="sub next"');
echo '</form>'; echo '</form>';

View File

@ -177,7 +177,23 @@ $table->data[2][1] .= '<div id="command_description" style=""></div>';
$table->colspan[2][1] = 2; $table->colspan[2][1] = 2;
$table->data[3][0] = __('Threshold'); $table->data[3][0] = __('Threshold');
$table->data[3][1] = html_print_input_text('action_threshold', $action_threshold, '', 5, 7, true); $table->data[3][1] = html_print_extended_select_for_time(
'action_threshold',
$action_threshold,
'',
'',
'',
false,
true,
false,
true,
'',
false,
false,
'',
false,
true
);
$table->colspan[3][1] = 2; $table->colspan[3][1] = 2;
$table->data[4][0] = ''; $table->data[4][0] = '';

View File

@ -55,7 +55,7 @@ if ($id) {
$id_group = $filter['id_group']; $id_group = $filter['id_group'];
$id_name = $filter['id_name']; $id_name = $filter['id_name'];
$event_type = $filter['event_type']; $event_type = $filter['event_type'];
$severity = $filter['severity']; $severity = explode(',', $filter['severity']);
$status = $filter['status']; $status = $filter['status'];
$search = $filter['search']; $search = $filter['search'];
$text_agent = $filter['text_agent']; $text_agent = $filter['text_agent'];
@ -123,7 +123,7 @@ if ($update || $create) {
$id_group_filter = get_parameter('id_group_filter'); $id_group_filter = get_parameter('id_group_filter');
$id_name = (string) get_parameter('id_name'); $id_name = (string) get_parameter('id_name');
$event_type = get_parameter('event_type', ''); $event_type = get_parameter('event_type', '');
$severity = get_parameter('severity', ''); $severity = implode(',', get_parameter('severity', -1));
$status = get_parameter('status', ''); $status = get_parameter('status', '');
$search = get_parameter('search', ''); $search = get_parameter('search', '');
$text_agent = get_parameter('text_agent', ''); $text_agent = get_parameter('text_agent', '');
@ -172,6 +172,8 @@ if ($update || $create) {
'user_comment' => $user_comment, 'user_comment' => $user_comment,
'filter_only_alert' => $filter_only_alert, 'filter_only_alert' => $filter_only_alert,
]; ];
$severity = explode(',', $severity);
} }
if ($update) { if ($update) {
@ -289,15 +291,24 @@ $table->data[3][1] = html_print_select(
true true
); );
if (empty($severity) && $severity !== '0') {
$severity = -1;
}
$table->data[4][0] = '<b>'.__('Severity').'</b>'; $table->data[4][0] = '<b>'.__('Severity').'</b>';
$table->data[4][1] = html_print_select( $table->data[4][1] = html_print_select(
get_priorities(), get_priorities(),
'severity', 'severity[]',
$severity, $severity,
'', '',
__('All'), __('All'),
'-1', -1,
true true,
true,
true,
'',
false,
'width: 175px'
); );
$fields = events_get_all_status(); $fields = events_get_all_status();

View File

@ -290,7 +290,7 @@ $table_aux = new stdClass();
foreach ($result_graphs as $graph) { foreach ($result_graphs as $graph) {
$data = []; $data = [];
$data[0] = '<a href="index.php?sec=reporting&sec2=operation/reporting/graph_viewer&view_graph=1&id='.$graph['id_graph'].'">'.ui_print_truncate_text(io_safe_output($graph['name']), 70).'</a>'; $data[0] = '<a href="index.php?sec=reporting&sec2=operation/reporting/graph_viewer&view_graph=1&id='.$graph['id_graph'].'">'.ui_print_truncate_text($graph['name'], 70).'</a>';
$data[1] = ui_print_truncate_text($graph['description'], 70); $data[1] = ui_print_truncate_text($graph['description'], 70);

View File

@ -628,6 +628,8 @@ switch ($action) {
$unknown_checks = $item['unknown_checks']; $unknown_checks = $item['unknown_checks'];
$agent_max_value = $item['agent_max_value']; $agent_max_value = $item['agent_max_value'];
$agent_min_value = $item['agent_min_value']; $agent_min_value = $item['agent_min_value'];
$failover_mode = $item['failover_mode'];
$failover_type = $item['failover_type'];
break; break;
case 'group_report': case 'group_report':
@ -3263,6 +3265,13 @@ function print_General_list($width, $action, $idItem=null, $type='general')
$meta = false; $meta = false;
} }
$failover_mode = db_get_value(
'failover_mode',
'treport_content',
'id_rc',
$idItem
);
$operation = [ $operation = [
'avg' => __('rate'), 'avg' => __('rate'),
'max' => __('max'), 'max' => __('max'),
@ -3284,6 +3293,18 @@ function print_General_list($width, $action, $idItem=null, $type='general')
<th class="header" scope="col"> <th class="header" scope="col">
<?php echo __('Module'); ?> <?php echo __('Module'); ?>
</th> </th>
<?php
if ($failover_mode) {
?>
<th class="header" scope="col">
<?php echo __('Agent Failover'); ?>
</th>
<th class="header" scope="col">
<?php echo __('Module Failover'); ?>
</th>
<?php
}
?>
<th class="header" scope="col"> <th class="header" scope="col">
<?php echo __('Action'); ?> <?php echo __('Action'); ?>
</th> </th>
@ -3318,7 +3339,7 @@ function print_General_list($width, $action, $idItem=null, $type='general')
case 'new': case 'new':
?> ?>
<tr id="general_template" style="" class="datos"> <tr id="general_template" style="" class="datos">
<td colspan="3"> <td colspan="4">
<?php <?php
echo __('Please save the report to start adding items into the list.'); echo __('Please save the report to start adding items into the list.');
?> ?>
@ -3365,19 +3386,50 @@ function print_General_list($width, $action, $idItem=null, $type='general')
['id_agente_modulo' => $item['id_agent_module']] ['id_agente_modulo' => $item['id_agent_module']]
); );
if (isset($item['id_agent_module_failover']) === true
&& $item['id_agent_module_failover'] !== 0
) {
$idAgentFailover = db_get_value_filter(
'id_agente',
'tagente_modulo',
['id_agente_modulo' => $item['id_agent_module_failover']]
);
$nameAgentFailover = agents_get_alias(
$idAgentFailover
);
$nameModuleFailover = db_get_value_filter(
'nombre',
'tagente_modulo',
['id_agente_modulo' => $item['id_agent_module_failover']]
);
}
$server_name_element = ''; $server_name_element = '';
if ($meta && $server_name != '') { if ($meta && $server_name != '') {
$server_name_element .= ' ('.$server_name.')'; $server_name_element .= ' ('.$server_name.')';
} }
if ($type == 'availability') { if ($type == 'availability') {
echo '<tr id="general_'.$item['id'].'" style="" class="datos"> if ($failover_mode) {
<td>'.printSmallFont($nameAgent).$server_name_element.'</td> echo '<tr id="general_'.$item['id'].'" style="" class="datos">
<td>'.printSmallFont($nameModule).'</td> <td>'.printSmallFont($nameAgent).$server_name_element.'</td>
<td style="text-align: center;"> <td>'.printSmallFont($nameModule).'</td>
<a href="javascript: deleteGeneralRow('.$item['id'].');">'.html_print_image('images/cross.png', true).'</a> <td>'.printSmallFont($nameAgentFailover).$server_name_element.'</td>
</td> <td>'.printSmallFont($nameModuleFailover).'</td>
</tr>'; <td style="text-align: center;">
<a href="javascript: deleteGeneralRow('.$item['id'].');">'.html_print_image('images/cross.png', true).'</a>
</td>
</tr>';
} else {
echo '<tr id="general_'.$item['id'].'" style="" class="datos">
<td>'.printSmallFont($nameAgent).$server_name_element.'</td>
<td>'.printSmallFont($nameModule).'</td>
<td style="text-align: center;">
<a href="javascript: deleteGeneralRow('.$item['id'].');">'.html_print_image('images/cross.png', true).'</a>
</td>
</tr>';
}
} else { } else {
echo '<tr id="general_'.$item['id'].'" style="" class="datos"> echo '<tr id="general_'.$item['id'].'" style="" class="datos">
<td>'.printSmallFont($nameAgent).$server_name_element.'</td> <td>'.printSmallFont($nameAgent).$server_name_element.'</td>
@ -3403,6 +3455,15 @@ function print_General_list($width, $action, $idItem=null, $type='general')
<td class="agent_name"></td> <td class="agent_name"></td>
<td class="module_name"></td> <td class="module_name"></td>
<?php <?php
if ($type == 'availability'
&& $failover_mode
) {
?>
<td class="agent_name_failover"></td>
<td class="module_name_failover"></td>
<?php
}
if ($type != 'availability') { if ($type != 'availability') {
?> ?>
<td class="operation_name"></td> <td class="operation_name"></td>
@ -3456,6 +3517,43 @@ function print_General_list($width, $action, $idItem=null, $type='general')
</select> </select>
</td> </td>
<?php <?php
if ($type == 'availability' && $failover_mode) {
?>
<td class="sla_list_agent_failover_col">
<input id="hidden-id_agent_failover" name="id_agent_failover" value="" type="hidden">
<input id="hidden-server_name_failover" name="server_name_failover" value="" type="hidden">
<?php
$params = [];
$params['show_helptip'] = true;
$params['input_name'] = 'agent_failover';
$params['value'] = '';
$params['use_hidden_input_idagent'] = true;
$params['hidden_input_idagent_id'] = 'hidden-id_agent_failover';
$params['javascript_is_function_select'] = true;
$params['selectbox_id'] = 'id_agent_module_failover';
$params['add_none_module'] = false;
if ($meta) {
$params['use_input_id_server'] = true;
$params['input_id_server_id'] = 'hidden-id_server';
$params['disabled_javascript_on_blur_function'] = true;
}
ui_print_agent_autocomplete_input($params);
?>
</td>
<td class="sla_list_module_failover_col">
<select id="id_agent_module_failover" name="id_agent_module_failover" disabled="disabled" style="max-width: 180px">
<option value="0">
<?php
echo __('Select an Agent first');
?>
</option>
</select>
</td>
<?php
}
?>
<?php
if ($type !== 'availability') { if ($type !== 'availability') {
?> ?>
<td> <td>
@ -4495,6 +4593,10 @@ function addGeneralRow() {
var idAgent = $("input[name=id_agent_general]").val(); var idAgent = $("input[name=id_agent_general]").val();
var serverId = $("input[name=id_server]").val(); var serverId = $("input[name=id_server]").val();
var idModule = $("#id_agent_module_general").val(); var idModule = $("#id_agent_module_general").val();
var nameAgentFailover = $("input[name=agent_failover]").val();
var idModuleFailover = $("#id_agent_module_failover").val();
var nameModuleFailover = $("#id_agent_module_failover :selected").text();
var operation; var operation;
if ($("#id_operation_module_general").length) { if ($("#id_operation_module_general").length) {
operation = $("#id_operation_module_general").val(); operation = $("#id_operation_module_general").val();
@ -4580,10 +4682,63 @@ function addGeneralRow() {
} }
}); });
if (nameAgentFailover != '') {
//Truncate nameAgentFailover
var params = [];
params.push("truncate_text=1");
params.push("text=" + nameAgentFailover);
params.push("page=include/ajax/reporting.ajax");
jQuery.ajax ({
data: params.join ("&"),
type: 'POST',
url: action=
<?php
echo '"'.ui_get_full_url(
false,
false,
false,
false
).'"';
?>
+ "/ajax.php",
async: false,
timeout: 10000,
success: function (data) {
nameAgentFailover = data;
}
});
//Truncate nameModuleFailover
var params = [];
params.push("truncate_text=1");
params.push("text=" + nameModuleFailover);
params.push("page=include/ajax/reporting.ajax");
jQuery.ajax ({
data: params.join ("&"),
type: 'POST',
url: action=
<?php
echo '"'.ui_get_full_url(
false,
false,
false,
false
).'"';
?>
+ "/ajax.php",
async: false,
timeout: 10000,
success: function (data) {
nameModuleFailover = data;
}
});
}
var params = []; var params = [];
params.push("add_general=1"); params.push("add_general=1");
params.push("id=" + $("input[name=id_item]").val()); params.push("id=" + $("input[name=id_item]").val());
params.push("id_module=" + idModule); params.push("id_module=" + idModule);
params.push("id_module_failover=" + idModuleFailover);
params.push("id_server=" + serverId); params.push("id_server=" + serverId);
params.push("operation=" + operation); params.push("operation=" + operation);
params.push("id_agent=" + idAgent); params.push("id_agent=" + idAgent);
@ -4610,6 +4765,8 @@ function addGeneralRow() {
$("#row", row).attr('id', 'general_' + data['id']); $("#row", row).attr('id', 'general_' + data['id']);
$(".agent_name", row).html(nameAgent); $(".agent_name", row).html(nameAgent);
$(".module_name", row).html(nameModule); $(".module_name", row).html(nameModule);
$(".agent_name_failover", row).html(nameAgentFailover);
$(".module_name_failover", row).html(nameModuleFailover);
$(".operation_name", row).html(nameOperation); $(".operation_name", row).html(nameOperation);
$(".delete_button", row).attr( $(".delete_button", row).attr(
'href', 'href',
@ -4624,6 +4781,15 @@ function addGeneralRow() {
$("#id_operation_module_general").val('avg'); $("#id_operation_module_general").val('avg');
$("#id_agent_module_general").empty(); $("#id_agent_module_general").empty();
$("#id_agent_module_general").attr('disabled', 'true'); $("#id_agent_module_general").attr('disabled', 'true');
$("input[name=id_agent_failover]").val('');
$("input[name=agent_failover]").val('');
$("#id_agent_module_failover").empty();
$("#id_agent_module_failover").attr('disabled', 'true');
$("#id_agent_module_failover").append(
$("<option></option>")
.attr ("value", 0)
.html ($("#module_sla_text").html()));
} }
} }
}); });
@ -5111,6 +5277,12 @@ function chooseType() {
$("#row_select_fields3").hide(); $("#row_select_fields3").hide();
} }
$("#row_historical_db_check").hide(); $("#row_historical_db_check").hide();
$("#row_failover_mode").show();
var failover_checked = $("input[name='failover_mode']").prop("checked");
if(failover_checked){
$("#row_failover_type").show();
}
break; break;
case 'group_report': case 'group_report':

View File

@ -1207,8 +1207,7 @@ switch ($action) {
$report_id_user = get_parameter('report_id_user'); $report_id_user = get_parameter('report_id_user');
$non_interactive = get_parameter('non_interactive', 0); $non_interactive = get_parameter('non_interactive', 0);
// Pretty font by default for pdf. $custom_font = $config['custom_report_front_font'];
$custom_font = 'FreeSans.ttf';
switch ($type_access_selected) { switch ($type_access_selected) {
case 'group_view': case 'group_view':
@ -1284,7 +1283,6 @@ switch ($action) {
$metaconsole_report = (int) is_metaconsole(); $metaconsole_report = (int) is_metaconsole();
if ($config['custom_report_front']) { if ($config['custom_report_front']) {
$custom_font = $config['custom_report_front_font'];
$logo = $config['custom_report_front_logo']; $logo = $config['custom_report_front_logo'];
$header = $config['custom_report_front_header']; $header = $config['custom_report_front_header'];
$first_page = $config['custom_report_front_firstpage']; $first_page = $config['custom_report_front_firstpage'];
@ -1611,6 +1609,14 @@ switch ($action) {
$values['agent_min_value'] = get_parameter( $values['agent_min_value'] = get_parameter(
'agent_min_value' 'agent_min_value'
); );
$values['failover_mode'] = get_parameter(
'failover_mode',
0
);
$values['failover_type'] = get_parameter(
'failover_type',
REPORT_FAILOVER_TYPE_NORMAL
);
$good_format = true; $good_format = true;
break; break;

View File

@ -32,7 +32,7 @@ if (isset($_GET['server'])) {
$id_server = get_parameter_get('server'); $id_server = get_parameter_get('server');
// Headers // Headers
ui_print_page_header(__('Update Server'), 'images/gm_servers.png', false, 'servers', true); ui_print_page_header(__('Update Server'), 'images/gm_servers.png', false, 'servers', true);
$sql = sprintf('SELECT name, ip_address, description, server_type, exec_proxy FROM tserver WHERE id_server = %d', $id_server); $sql = sprintf('SELECT name, ip_address, description, server_type, exec_proxy, port FROM tserver WHERE id_server = %d', $id_server);
$row = db_get_row_sql($sql); $row = db_get_row_sql($sql);
echo '<form name="servers" method="POST" action="index.php?sec=gservers&sec2=godmode/servers/modificar_server&update=1">'; echo '<form name="servers" method="POST" action="index.php?sec=gservers&sec2=godmode/servers/modificar_server&update=1">';
html_print_input_hidden('server', $id_server); html_print_input_hidden('server', $id_server);
@ -75,6 +75,14 @@ if (isset($_GET['server'])) {
__('Exec Server'), __('Exec Server'),
html_print_checkbox('exec_proxy', 1, $row['exec_proxy'], true), html_print_checkbox('exec_proxy', 1, $row['exec_proxy'], true),
]; ];
$port_number = empty($row['port']) ? '' : $row['port'];
$table->data[] = [
__('Port'),
html_print_input_text('port', $port_number, '', 10, 0, true).ui_print_help_tip(__('Leave blank to use SSH default port (22)'), true),
];
if ($row['exec_proxy']) { if ($row['exec_proxy']) {
$table->data[] = [ $table->data[] = [
__('Check Exec Server'), __('Check Exec Server'),
@ -136,11 +144,15 @@ if (isset($_GET['server'])) {
$description = get_parameter_post('description'); $description = get_parameter_post('description');
$id_server = get_parameter_post('server'); $id_server = get_parameter_post('server');
$exec_proxy = get_parameter_post('exec_proxy'); $exec_proxy = get_parameter_post('exec_proxy');
$port = get_parameter_post('port');
$port_number = empty($port) ? 0 : $port;
$values = [ $values = [
'ip_address' => $address, 'ip_address' => $address,
'description' => $description, 'description' => $description,
'exec_proxy' => $exec_proxy, 'exec_proxy' => $exec_proxy,
'port' => $port_number,
]; ];
$result = db_process_sql_update('tserver', $values, ['id_server' => $id_server]); $result = db_process_sql_update('tserver', $values, ['id_server' => $id_server]);
if ($result !== false) { if ($result !== false) {

View File

@ -101,6 +101,10 @@ foreach ($servers as $server) {
$data[2] .= ui_print_help_tip(__('This is a master server'), true); $data[2] .= ui_print_help_tip(__('This is a master server'), true);
} }
if ($server['exec_proxy'] == 1) {
$data[2] .= html_print_image('images/star.png', true, ['title' => __('Exec server enabled')]);
}
// $data[2] .= '</span> <span style="font-size:8px;"> v' .. '</span>'; // $data[2] .= '</span> <span style="font-size:8px;"> v' .. '</span>';
switch ($server['type']) { switch ($server['type']) {
case 'snmp': case 'snmp':

View File

@ -1011,6 +1011,7 @@ $row++;
$table_report->class = 'databox filters'; $table_report->class = 'databox filters';
$table_report->style[0] = 'font-weight: bold;'; $table_report->style[0] = 'font-weight: bold;';
$table_report->size[0] = '50%'; $table_report->size[0] = '50%';
$table_report->data = []; $table_report->data = [];
$table_report->data[$row][0] = __('Show report info with description').ui_print_help_tip( $table_report->data[$row][0] = __('Show report info with description').ui_print_help_tip(
@ -1048,6 +1049,20 @@ $row++;
$row++; $row++;
$table_report->data[$row][0] = __('PDF font family');
$table_report->data[$row][1] = html_print_select(
$fonts,
'custom_report_front_font',
$config['custom_report_front_font'],
false,
__('Default'),
'',
true
);
$row++;
$table_report->data[$row][0] = __('Graph image height for HTML reports'); $table_report->data[$row][0] = __('Graph image height for HTML reports');
$table_report->data[$row][0] .= ui_print_help_tip( $table_report->data[$row][0] .= ui_print_help_tip(
__('This is the height in pixels of the module graph or custom graph in the reports (only: HTML)'), __('This is the height in pixels of the module graph or custom graph in the reports (only: HTML)'),
@ -1078,18 +1093,6 @@ $row++;
} }
} }
// Font
$table_report->data['custom_report_front-font'][0] = __('Custom report front').' - '.__('Font family');
$table_report->data['custom_report_front-font'][1] = html_print_select(
$fonts,
'custom_report_front_font',
$config['custom_report_front_font'],
false,
__('Default'),
'',
true
);
// Logo // Logo
$table_report->data['custom_report_front-logo'][0] = __('Custom report front').' - '.__('Custom logo').ui_print_help_tip( $table_report->data['custom_report_front-logo'][0] = __('Custom report front').' - '.__('Custom logo').ui_print_help_tip(
__("The dir of custom logos is in your www Console in 'images/custom_logo'. You can upload more files (ONLY JPEG AND PNG) in upload tool in console."), __("The dir of custom logos is in your www Console in 'images/custom_logo'. You can upload more files (ONLY JPEG AND PNG) in upload tool in console."),
@ -1155,7 +1158,6 @@ $row++;
html_print_table($table_report); html_print_table($table_report);
echo '</fieldset>'; echo '</fieldset>';
// ---------------------------------------------------------------------- // ----------------------------------------------------------------------
// OTHER CONFIGURATION // OTHER CONFIGURATION
// ---------------------------------------------------------------------- // ----------------------------------------------------------------------
@ -1164,17 +1166,17 @@ $row++;
$table_other->class = 'databox filters'; $table_other->class = 'databox filters';
$table_other->style[0] = 'font-weight: bold;'; $table_other->style[0] = 'font-weight: bold;';
$table_other->size[0] = '50%'; $table_other->size[0] = '50%';
$table_other->size[1] = '26%';
$table_other->size[2] = '12%';
$table_other->size[3] = '12%';
$table_other->data = []; $table_other->data = [];
$table_other->data[$row][0] = __('Custom graphviz directory').ui_print_help_tip(__('Custom directory where the graphviz binaries are stored.'), true); $table_other->data[$row][0] = __('Custom graphviz directory').ui_print_help_tip(__('Custom directory where the graphviz binaries are stored.'), true);
$table_other->data[$row][1] = html_print_input_text( $table_other->data[$row][1] = html_print_input_text(
'graphviz_bin_dir', 'graphviz_bin_dir',
$config['graphviz_bin_dir'], $config['graphviz_bin_dir'],
'', '',
50, 25,
255, 255,
true true
); );
@ -1192,8 +1194,6 @@ $row++;
); );
$row++; $row++;
$table_other->data[$row][0] = __('Show only the group name'); $table_other->data[$row][0] = __('Show only the group name');
$table_other->data[$row][0] .= ui_print_help_tip( $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.'),
@ -1239,16 +1239,15 @@ $row++;
// CUSTOM VALUES POST PROCESS // CUSTOM VALUES POST PROCESS
// ---------------------------------------------------------------------- // ----------------------------------------------------------------------
$table_other->data[$row][0] = __('Custom values post process'); $table_other->data[$row][0] = __('Custom values post process');
$table_other->data[$row][1] = '<table>'; $table_other->data[$row][1] = __('Value').':&nbsp;'.html_print_input_text('custom_value', '', '', 25, 50, true);
$table_other->data[$row][1] .= __('Value').':&nbsp;'.html_print_input_text('custom_value', '', '', 25, 50, true); $table_other->data[$row][2] = __('Text').':&nbsp;'.html_print_input_text('custom_text', '', '', 15, 50, true);
$table_other->data[$row][1] .= '&nbsp;'.__('Text').':&nbsp;'.html_print_input_text('custom_text', '', '', 25, 50, true); $table_other->data[$row][2] .= '&nbsp;';
$table_other->data[$row][1] .= '&nbsp;'; $table_other->data[$row][2] .= html_print_input_hidden(
$table_other->data[$row][1] .= html_print_input_hidden(
'custom_value_add', 'custom_value_add',
'', '',
true true
); );
$table_other->data[$row][1] .= html_print_button( $table_other->data[$row][3] = html_print_button(
__('Add'), __('Add'),
'custom_value_add_btn', 'custom_value_add_btn',
false, false,
@ -1257,10 +1256,11 @@ $row++;
true true
); );
$table_other->data[$row][1] .= '<br /><br />'; $row++;
$table_other->data[$row][1] .= __('Delete custom values').': '; $table_other->data[$row][0] = '';
$table_other->data[$row][1] .= html_print_select( $table_other->data[$row][1] = __('Delete custom values').': ';
$table_other->data[$row][2] = html_print_select(
post_process_get_custom_values(), post_process_get_custom_values(),
'custom_values', 'custom_values',
'', '',
@ -1270,7 +1270,7 @@ $row++;
true true
); );
$count_custom_postprocess = post_process_get_custom_values(); $count_custom_postprocess = post_process_get_custom_values();
$table_other->data[$row][1] .= html_print_button( $table_other->data[$row][3] = html_print_button(
__('Delete'), __('Delete'),
'custom_values_del_btn', 'custom_values_del_btn',
empty($count_custom_postprocess), empty($count_custom_postprocess),
@ -1284,7 +1284,8 @@ $row++;
'', '',
true true
); );
$table_other->data[$row][1] .= '</table>'; $table_other->data[$row][3] .= '<br><br>';
// ---------------------------------------------------------------------- // ----------------------------------------------------------------------
// ---------------------------------------------------------------------- // ----------------------------------------------------------------------
// CUSTOM INTERVAL VALUES // CUSTOM INTERVAL VALUES
@ -1299,22 +1300,52 @@ $row++;
SECONDS_1MONTH => __('months'), SECONDS_1MONTH => __('months'),
SECONDS_1YEAR => __('years'), SECONDS_1YEAR => __('years'),
]; ];
$table_other->data[$row][1] = __('Add new custom value to intervals').': '; $table_other->data[$row][1] = __('Value').': ';
$table_other->data[$row][1] .= html_print_input_text('interval_value', '', '', 5, 5, true); $table_other->data[$row][1] .= html_print_input_text('interval_value', '', '', 5, 5, true);
$table_other->data[$row][1] .= html_print_select($units, 'interval_unit', 1, '', '', '', true, false, false); $table_other->data[$row][2] = html_print_select($units, 'interval_unit', 1, '', '', '', true, false, false);
$table_other->data[$row][1] .= html_print_button(__('Add'), 'interval_add_btn', false, '', 'class="sub next"', true); $table_other->data[$row][3] = html_print_button(__('Add'), 'interval_add_btn', false, '', 'class="sub next"', true);
$table_other->data[$row][1] .= '<br><br>';
$table_other->data[$row][1] .= __('Delete interval').': '; $row++;
$table_other->data[$row][1] .= html_print_select(get_periods(false, false), 'intervals', '', '', '', '', true);
$table_other->data[$row][1] .= html_print_button(__('Delete'), 'interval_del_btn', empty($config['interval_values']), '', 'class="sub cancel"', true); $table_other->data[$row][0] = '';
$table_other->data[$row][1] = __('Delete interval').': ';
$table_other->data[$row][2] = html_print_select(get_periods(false, false), 'intervals', '', '', '', '', true);
$table_other->data[$row][3] = html_print_button(__('Delete'), 'interval_del_btn', empty($config['interval_values']), '', 'class="sub cancel"', true);
$table_other->data[$row][1] .= html_print_input_hidden('interval_values', $config['interval_values'], true); $table_other->data[$row][1] .= html_print_input_hidden('interval_values', $config['interval_values'], true);
// This hidden field will be filled from jQuery before submit // This hidden field will be filled from jQuery before submit
$table_other->data[$row][1] .= html_print_input_hidden('interval_to_delete', '', true); $table_other->data[$row][1] .= html_print_input_hidden('interval_to_delete', '', true);
$table_other->data[$row][3] .= '<br><br>';
// ---------------------------------------------------------------------- // ----------------------------------------------------------------------
$row++; $row++;
$table_other->data[$row][0] = __('Module units');
$table_other->data[$row][1] = __('Value').': ';
$table_other->data[$row][1] .= html_print_input_text('custom_module_unit', '', '', 15, 50, true);
$table_other->data[$row][2] = '';
$table_other->data[$row][3] = html_print_button(__('Add'), 'module_unit_add_btn', false, '', 'class="sub next"', true);
$row++;
$table_other->data[$row][0] = '';
$table_other->data[$row][1] = __('Delete custom values').': ';
$table_other->data[$row][2] = html_print_select(get_custom_module_units(), 'module_units', '', '', '', '', true, false, true, 'w100p');
$table_other->data[$row][3] = html_print_button(
__('Delete'),
'custom_module_unit_del_btn',
empty($count_custom_postprocess),
'',
'class="sub cancel"',
true
);
$table_other->data[$row][3] .= html_print_input_hidden(
'custom_module_unit_to_delete',
'',
true
);
$row++;
$common_dividers = [ $common_dividers = [
';' => ';', ';' => ';',
',' => ',', ',' => ',',
@ -1331,6 +1362,14 @@ $row++;
$row++; $row++;
$table_other->data[$row][0] = __('Data multiplier to use in graphs/data');
$options_data_multiplier = [];
$options_data_multiplier[0] = __('Use 1024 when module unit are bytes');
$options_data_multiplier[1] = __('Use always 1000');
$options_data_multiplier[2] = __('Use always 1024');
$table_other->data[$row][1] = html_print_select($options_data_multiplier, 'use_data_multiplier', $config['use_data_multiplier'], '', '', 1, true, false, false);
echo '<fieldset>'; echo '<fieldset>';
echo '<legend>'.__('Other configuration').' '.ui_print_help_icon('other_conf_tab', true).'</legend>'; echo '<legend>'.__('Other configuration').' '.ui_print_help_icon('other_conf_tab', true).'</legend>';
@ -1397,7 +1436,6 @@ function edit_csv_divider () {
function display_custom_report_front (show,table) { function display_custom_report_front (show,table) {
if (show == true) { if (show == true) {
$('tr#'+table+'-custom_report_front-font').show();
$('tr#'+table+'-custom_report_front-logo').show(); $('tr#'+table+'-custom_report_front-logo').show();
$('tr#'+table+'-custom_report_front-preview').show(); $('tr#'+table+'-custom_report_front-preview').show();
$('tr#'+table+'-custom_report_front-header').show(); $('tr#'+table+'-custom_report_front-header').show();
@ -1405,7 +1443,6 @@ function display_custom_report_front (show,table) {
$('tr#'+table+'-custom_report_front-footer').show(); $('tr#'+table+'-custom_report_front-footer').show();
} }
else { else {
$('tr#'+table+'-custom_report_front-font').hide();
$('tr#'+table+'-custom_report_front-logo').hide(); $('tr#'+table+'-custom_report_front-logo').hide();
$('tr#'+table+'-custom_report_front-preview').hide(); $('tr#'+table+'-custom_report_front-preview').hide();
$('tr#'+table+'-custom_report_front-header').hide(); $('tr#'+table+'-custom_report_front-header').hide();
@ -1547,7 +1584,20 @@ $(document).ready (function () {
}); });
//------------------------------------------------------------------ //------------------------------------------------------------------
//------------------------------------------------------------------
// CUSTOM MODULE UNITS
//------------------------------------------------------------------
$("#button-custom_module_unit_del_btn").click( function() {
var unit_selected = $('#module_units option:selected').val();
$('#hidden-custom_module_unit_to_delete').val(unit_selected);
$('#submit-update_button').trigger('click');
});
$("#button-module_unit_add_btn").click( function() {
$('#submit-update_button').trigger('click');
});
//------------------------------------------------------------------
// Juanma (06/05/2014) New feature: Custom front page for reports // Juanma (06/05/2014) New feature: Custom front page for reports
var custom_report = $('#checkbox-custom_report_front') var custom_report = $('#checkbox-custom_report_front')
.prop('checked'); .prop('checked');

View File

@ -46,6 +46,13 @@ if (! check_acl($config['id_user'], 0, 'PM')
$baseurl = ui_get_full_url(false, false, false, false); $baseurl = ui_get_full_url(false, false, false, false);
$current_package = db_get_value(
'value',
'tconfig',
'token',
'current_package_enterprise'
);
?> ?>
<!-- Add the stylesheet here cause somehow the 'ui_require_css_file' <!-- Add the stylesheet here cause somehow the 'ui_require_css_file'
@ -90,6 +97,8 @@ is not working on the metaconsole and there is no time to fix it -->
var text1_package_file = "<?php echo __('There is a new update available'); ?>\n"; var text1_package_file = "<?php echo __('There is a new update available'); ?>\n";
var text2_package_file = "<?php echo __('There is a new update available to apply. Do you want to start the update process?'); ?>\n"; var text2_package_file = "<?php echo __('There is a new update available to apply. Do you want to start the update process?'); ?>\n";
var text1_warning = "<?php echo __('WARNING'); ?>\n";
var text2_warning = "<?php echo __('This update does not correspond to the next version of Pandora'); ?>\n";
var applying_mr = "<?php echo __('Applying DB MR'); ?>\n"; var applying_mr = "<?php echo __('Applying DB MR'); ?>\n";
var cancel_button = "<?php echo __('Cancel'); ?>\n"; var cancel_button = "<?php echo __('Cancel'); ?>\n";
var ok_button = "<?php echo __('Ok'); ?>\n"; var ok_button = "<?php echo __('Ok'); ?>\n";
@ -109,5 +118,5 @@ is not working on the metaconsole and there is no time to fix it -->
<script src="<?php echo $baseurl; ?>/include/javascript/update_manager.js"></script> <script src="<?php echo $baseurl; ?>/include/javascript/update_manager.js"></script>
<script type="text/javascript"> <script type="text/javascript">
form_upload("<?php echo $baseurl; ?>"); form_upload("<?php echo $baseurl; ?>", "<?php echo $current_package; ?>");
</script> </script>

View File

@ -264,12 +264,21 @@ if ($show_update_action_menu) {
$data .= __('Threshold'); $data .= __('Threshold');
$data .= '</td>'; $data .= '</td>';
$data .= '<td class="datos2">'; $data .= '<td class="datos2">';
$data .= html_print_input_text( $data .= html_print_extended_select_for_time(
'module_action_threshold_ajax', 'module_action_threshold_ajax',
$action_option['module_action_threshold'], $action_option['module_action_threshold'],
'', '',
4, '',
10, '',
false,
true,
false,
true,
'',
false,
false,
'',
false,
true true
); );
$data .= '</td>'; $data .= '</td>';

View File

@ -231,7 +231,7 @@ if ($save_event_filter) {
$values['id_name'] = get_parameter('id_name'); $values['id_name'] = get_parameter('id_name');
$values['id_group'] = get_parameter('id_group'); $values['id_group'] = get_parameter('id_group');
$values['event_type'] = get_parameter('event_type'); $values['event_type'] = get_parameter('event_type');
$values['severity'] = get_parameter('severity'); $values['severity'] = implode(',', get_parameter('severity', -1));
$values['status'] = get_parameter('status'); $values['status'] = get_parameter('status');
$values['search'] = get_parameter('search'); $values['search'] = get_parameter('search');
$values['text_agent'] = get_parameter('text_agent'); $values['text_agent'] = get_parameter('text_agent');
@ -278,7 +278,7 @@ if ($update_event_filter) {
$id = get_parameter('id'); $id = get_parameter('id');
$values['id_group'] = get_parameter('id_group'); $values['id_group'] = get_parameter('id_group');
$values['event_type'] = get_parameter('event_type'); $values['event_type'] = get_parameter('event_type');
$values['severity'] = get_parameter('severity'); $values['severity'] = implode(',', get_parameter('severity', -1));
$values['status'] = get_parameter('status'); $values['status'] = get_parameter('status');
$values['search'] = get_parameter('search'); $values['search'] = get_parameter('search');
$values['text_agent'] = get_parameter('text_agent'); $values['text_agent'] = get_parameter('text_agent');
@ -439,8 +439,10 @@ function load_form_filter() {
$("#id_group").val(val); $("#id_group").val(val);
if (i == 'event_type') if (i == 'event_type')
$("#event_type").val(val); $("#event_type").val(val);
if (i == 'severity') if (i == 'severity') {
$("#severity").val(val); const multiple = val.split(",");
$("#severity").val(multiple);
}
if (i == 'status') if (i == 'status')
$("#status").val(val); $("#status").val(val);
if (i == 'search') if (i == 'search')
@ -954,7 +956,11 @@ if ($perform_event_response) {
break; break;
} }
system('ssh pandora_exec_proxy@'.$server_data['ip_address'].' "'.$timeout_bin.' '.$command_timeout.' '.io_safe_output($command).' 2>&1"', $ret_val); if (empty($server_data['port'])) {
system('ssh pandora_exec_proxy@'.$server_data['ip_address'].' "'.$timeout_bin.' '.$command_timeout.' '.io_safe_output($command).' 2>&1"', $ret_val);
} else {
system('ssh -p '.$server_data['port'].' pandora_exec_proxy@'.$server_data['ip_address'].' "'.$timeout_bin.' '.$command_timeout.' '.io_safe_output($command).' 2>&1"', $ret_val);
}
} }
} else { } else {
switch (PHP_OS) { switch (PHP_OS) {
@ -1579,7 +1585,7 @@ if ($get_list_events_agents) {
$id_agent = get_parameter('id_agent'); $id_agent = get_parameter('id_agent');
$server_id = get_parameter('server_id'); $server_id = get_parameter('server_id');
$event_type = get_parameter('event_type'); $event_type = get_parameter('event_type');
$severity = get_parameter('severity'); $severity = implode(',', get_parameter('severity', -1));
$status = get_parameter('status'); $status = get_parameter('status');
$search = get_parameter('search'); $search = get_parameter('search');
$id_agent_module = get_parameter('id_agent_module'); $id_agent_module = get_parameter('id_agent_module');

View File

@ -111,6 +111,7 @@ if ($add_general) {
$id_module = get_parameter('id_module', 0); $id_module = get_parameter('id_module', 0);
$id_server = (int) get_parameter('id_server', 0); $id_server = (int) get_parameter('id_server', 0);
$operation = get_parameter('operation', ''); $operation = get_parameter('operation', '');
$id_module_failover = (int) get_parameter('id_module_failover', 0);
$include_enterprise = enterprise_include('include/functions_metaconsole.php'); $include_enterprise = enterprise_include('include/functions_metaconsole.php');
@ -126,10 +127,11 @@ if ($add_general) {
$result = db_process_sql_insert( $result = db_process_sql_insert(
'treport_content_item', 'treport_content_item',
[ [
'id_report_content' => $id, 'id_report_content' => $id,
'id_agent_module' => $id_module, 'id_agent_module' => $id_module,
'server_name' => $connection['server_name'], 'server_name' => $connection['server_name'],
'operation' => $operation, 'operation' => $operation,
'id_agent_module_failover' => $id_module_failover,
] ]
); );

View File

@ -442,20 +442,16 @@ switch ($action) {
|| ($layoutData['type'] == PERCENTILE_BUBBLE) || ($layoutData['type'] == PERCENTILE_BUBBLE)
) { ) {
if ($value_show == 'value') { if ($value_show == 'value') {
$returnValue = format_for_graph($returnValue, 2);
$unit_text_db = db_get_sql( $unit_text_db = db_get_sql(
'SELECT unit 'SELECT unit
FROM tagente_modulo FROM tagente_modulo
WHERE id_agente_modulo = '.$layoutData['id_agente_modulo'] WHERE id_agente_modulo = '.$layoutData['id_agente_modulo']
); );
$unit_text_db = trim(io_safe_output($unit_text_db)); $unit_text_db = trim(io_safe_output($unit_text_db));
if ($value_show == 'value') { $divisor = get_data_multiplier($unit_text_db);
// Set empty string unit at the moment
// and change for old false value $returnValue = format_for_graph($returnValue, 2, '.', ',', $divisor);
$unit_text = '';
}
if (!empty($unit_text_db)) { if (!empty($unit_text_db)) {
$unit_text = $unit_text_db; $unit_text = $unit_text_db;

View File

@ -83,6 +83,7 @@ if (check_login(false) === false) {
<link rel="stylesheet" href="styles/js/jquery-ui.min.css" type="text/css" /> <link rel="stylesheet" href="styles/js/jquery-ui.min.css" type="text/css" />
<link rel="stylesheet" href="styles/js/jquery-ui_custom.css" type="text/css" /> <link rel="stylesheet" href="styles/js/jquery-ui_custom.css" type="text/css" />
<script language="javascript" type='text/javascript' src='javascript/pandora.js'></script> <script language="javascript" type='text/javascript' src='javascript/pandora.js'></script>
<script language="javascript" type='text/javascript' src='javascript/pandora_ui.js'></script>
<script language="javascript" type='text/javascript' src='javascript/jquery-3.3.1.min.js'></script> <script language="javascript" type='text/javascript' src='javascript/jquery-3.3.1.min.js'></script>
</head> </head>
<body> <body>
@ -140,6 +141,7 @@ if (file_exists('languages/'.$user_language.'.mo') === true) {
<link rel="stylesheet" href="styles/js/jquery-ui.min.css" type="text/css" /> <link rel="stylesheet" href="styles/js/jquery-ui.min.css" type="text/css" />
<link rel="stylesheet" href="styles/js/jquery-ui_custom.css" type="text/css" /> <link rel="stylesheet" href="styles/js/jquery-ui_custom.css" type="text/css" />
<script language="javascript" type='text/javascript' src='javascript/pandora.js'></script> <script language="javascript" type='text/javascript' src='javascript/pandora.js'></script>
<script language="javascript" type='text/javascript' src='javascript/pandora_ui.js'></script>
<script language="javascript" type='text/javascript' src='javascript/jquery-3.3.1.min.js'></script> <script language="javascript" type='text/javascript' src='javascript/jquery-3.3.1.min.js'></script>
<script language="javascript" type='text/javascript' src='javascript/jquery.pandora.js'></script> <script language="javascript" type='text/javascript' src='javascript/jquery.pandora.js'></script>
<script language="javascript" type='text/javascript' src='javascript/jquery-ui.min.js'></script> <script language="javascript" type='text/javascript' src='javascript/jquery-ui.min.js'></script>

View File

@ -1340,6 +1340,10 @@ class NetworkMap
if ($rel['parent_type'] == NODE_MODULE if ($rel['parent_type'] == NODE_MODULE
&& $rel['child_type'] == NODE_MODULE && $rel['child_type'] == NODE_MODULE
) { ) {
// Keep std references.
$ref_id_parent = $id_parent;
$ref_id_child = $id_child;
// Module information available. // Module information available.
$id_parent = $rel['id_parent_source_data']; $id_parent = $rel['id_parent_source_data'];
$id_child = $rel['id_child_source_data']; $id_child = $rel['id_child_source_data'];
@ -1374,6 +1378,12 @@ class NetworkMap
'index' => $index, 'index' => $index,
'priority' => $priority, 'priority' => $priority,
]; ];
// Keep node reference mapping - low precedence relationship.
$rel_map[$ref_id_parent.'_'.$ref_id_child] = [
'index' => $index,
'priority' => $priority,
];
} }
} else if ($rel['parent_type'] == NODE_AGENT } else if ($rel['parent_type'] == NODE_AGENT
&& $rel['child_type'] == NODE_AGENT && $rel['child_type'] == NODE_AGENT

View File

@ -616,7 +616,8 @@ class Tree
&& $statusType !== STATUS_MODULE_NO_DATA_BALL && $statusType !== STATUS_MODULE_NO_DATA_BALL
) { ) {
if (is_numeric($module['value'])) { if (is_numeric($module['value'])) {
$statusTitle .= ' : '.format_for_graph($module['value']); $divisor = get_data_multiplier($module['unit']);
$statusTitle .= ' : '.format_for_graph($module['value'], 1, '.', ',', $divisor);
} else { } else {
$statusTitle .= ' : '.substr(io_safe_output($module['value']), 0, 42); $statusTitle .= ' : '.substr(io_safe_output($module['value']), 0, 42);
} }
@ -1061,7 +1062,7 @@ class Tree
$columns = 'DISTINCT(tam.id_agente_modulo) AS id, tam.nombre AS name, $columns = 'DISTINCT(tam.id_agente_modulo) AS id, tam.nombre AS name,
tam.id_tipo_modulo, tam.id_modulo, tae.estado, tae.datos, tam.id_tipo_modulo, tam.id_modulo, tae.estado, tae.datos,
tam.parent_module_id AS parent, tatm.id AS alerts'; tam.parent_module_id AS parent, tatm.id AS alerts, tam.unit';
$sql = "SELECT $columns $sql = "SELECT $columns
FROM tagente_modulo tam FROM tagente_modulo tam

View File

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

View File

@ -262,6 +262,11 @@ function format_for_graph(
$divider=1000, $divider=1000,
$sufix='' $sufix=''
) { ) {
// Exception to exclude modules whose unit is already formatted as KB (satellite modules)
if (!empty($sufix) && $sufix == 'KB') {
return;
}
$shorts = [ $shorts = [
'', '',
'K', 'K',
@ -1994,7 +1999,12 @@ function get_snmpwalk(
if (enterprise_installed()) { if (enterprise_installed()) {
if ($server_to_exec != 0) { if ($server_to_exec != 0) {
$server_data = db_get_row('tserver', 'id_server', $server_to_exec); $server_data = db_get_row('tserver', 'id_server', $server_to_exec);
exec('ssh pandora_exec_proxy@'.$server_data['ip_address'].' "'.$command_str.'"', $output, $rc);
if (empty($server_data['port'])) {
exec('ssh pandora_exec_proxy@'.$server_data['ip_address'].' "'.$command_str.'"', $output, $rc);
} else {
exec('ssh -p '.$server_data['port'].' pandora_exec_proxy@'.$server_data['ip_address'].' "'.$command_str.'"', $output, $rc);
}
} else { } else {
exec($command_str, $output, $rc); exec($command_str, $output, $rc);
} }
@ -2503,12 +2513,13 @@ function get_user_dashboards($id_user)
/** /**
* Get all the possible periods in seconds. * Get all the possible periods in seconds.
* *
* @param bool Flag to show or not custom fist option * @param boolean $custom Flag to show or not custom fist option
* @param bool Show the periods by default if it is empty * @param boolean $show_default Show the periods by default if it is empty
* @param boolean $allow_zero Allow the use of the value zero.
* *
* @return The possible periods in an associative array. * @return array The possible periods in an associative array.
*/ */
function get_periods($custom=true, $show_default=true) function get_periods($custom=true, $show_default=true, $allow_zero=false)
{ {
global $config; global $config;
@ -2520,6 +2531,10 @@ function get_periods($custom=true, $show_default=true)
if (empty($config['interval_values'])) { if (empty($config['interval_values'])) {
if ($show_default) { if ($show_default) {
if ($allow_zero === true) {
$periods[0] = sprintf(__('%s seconds'), '0');
}
$periods[SECONDS_5MINUTES] = sprintf(__('%s minutes'), '5'); $periods[SECONDS_5MINUTES] = sprintf(__('%s minutes'), '5');
$periods[SECONDS_30MINUTES] = sprintf(__('%s minutes'), '30 '); $periods[SECONDS_30MINUTES] = sprintf(__('%s minutes'), '30 ');
$periods[SECONDS_1HOUR] = __('1 hour'); $periods[SECONDS_1HOUR] = __('1 hour');
@ -5465,6 +5480,45 @@ function get_help_info($section_name)
} else { } else {
$result .= 'Discovery&printable=yes'; $result .= 'Discovery&printable=yes';
} }
case 'alert_configure':
if ($es) {
$result .= 'Alerts#Correlation_alert_creation';
} else {
$result .= 'Alerts#Correlation_alert_creation';
}
break;
case 'alert_correlation':
if ($es) {
$result .= 'Alerts#Alert_correlation:_event_and_log_alerts';
} else {
$result .= 'Alerts#Alert_correlation:_event_and_log_alerts';
}
break;
case 'alert_rules':
if ($es) {
$result .= 'Alerts#Rules_within_a_correlation_alert';
} else {
$result .= 'Alerts#Rules_within_a_correlation_alert';
}
break;
case 'alert_fields':
if ($es) {
$result .= 'Alerts#Step_3:_Advanced_fields';
} else {
$result .= 'Alerts#Step_3:_Advanced_fields';
}
break;
case 'alert_triggering':
if ($es) {
$result .= 'Alerts#Configuring_an_alert_template';
} else {
$result .= 'Alerts#Configuring_an_alert_template';
}
break; break;
} }
@ -5494,3 +5548,108 @@ if (!function_exists('getallheaders')) {
} }
/**
* Update config token that contains custom module units.
*
* @param string Name of new module unit.
* @return boolean Success or failure.
*/
function add_custom_module_unit($value)
{
global $config;
$custom_module_units = get_custom_module_units();
$custom_module_units[$value] = $value;
$new_conf = json_encode($custom_module_units);
$return = config_update_value(
'custom_module_units',
$new_conf
);
if ($return) {
$config['custom_module_units'] = $new_conf;
return true;
} else {
return false;
}
}
function get_custom_module_units()
{
global $config;
if (!isset($config['custom_module_units'])) {
$custom_module_units = [];
} else {
$custom_module_units = json_decode(
io_safe_output($config['custom_module_units']),
true
);
}
return $custom_module_units;
}
function delete_custom_module_unit($value)
{
global $config;
$custom_units = get_custom_module_units();
unset($custom_units[io_safe_output($value)]);
$new_conf = json_encode($custom_units);
$return = config_update_value(
'custom_module_units',
$new_conf
);
if ($return) {
$config['custom_module_units'] = $new_conf;
return true;
} else {
return false;
}
}
/**
* Get multiplier to be applied on module data in order to represent it properly. Based on setup configuration and module's unit, either 1000 or 1024 will be returned.
*
* @param string Module's unit.
*
* @return integer Multiplier.
*/
function get_data_multiplier($unit)
{
global $config;
switch ($config['use_data_multiplier']) {
case 0:
if (strpos(strtolower($unit), 'yte') !== false) {
$multiplier = 1024;
} else {
$multiplier = 1000;
}
break;
case 2:
$multiplier = 1024;
break;
case 1:
default:
$multiplier = 1000;
break;
}
return $multiplier;
}

View File

@ -3512,13 +3512,18 @@ function agents_get_status_animation($up=true)
function agents_get_agent_id_by_alias_regex($alias_regex, $flag='i', $limit=0) function agents_get_agent_id_by_alias_regex($alias_regex, $flag='i', $limit=0)
{ {
$agents_id = []; $agents_id = [];
$all_agents = agents_get_agents(false, ['id_agente', 'alias']); if (is_metaconsole()) {
$all_agents = agents_meta_get_agents('AR', '|');
} else {
$all_agents = agents_get_group_agents(0, true, 'lower', false, false, true, '|');
}
$agent_match = '/'.$alias_regex.'/'.$flag; $agent_match = '/'.$alias_regex.'/'.$flag;
foreach ($all_agents as $agent) { foreach ($all_agents as $agent_id => $agent_alias) {
$result_agent_match = preg_match($agent_match, $agent['alias']); $result_agent_match = preg_match($agent_match, $agent_alias);
if ($result_agent_match) { if ($result_agent_match) {
$agents_id[] = $agent['id_agente']; $agents_id[] = $agent_id;
$i++; $i++;
if ($i === $limit) { if ($i === $limit) {
break; break;

View File

@ -1279,6 +1279,28 @@ function config_update_config()
$error_update[] = __('Delete interval'); $error_update[] = __('Delete interval');
} }
// --------------------------------------------------
// --------------------------------------------------
// MODULE CUSTOM UNITS
// --------------------------------------------------
$custom_unit = get_parameter('custom_module_unit');
$custom_unit_to_delete = get_parameter('custom_module_unit_to_delete', '');
if (!empty($custom_unit)) {
if (!add_custom_module_unit(
$custom_unit
)
) {
$error_update[] = __('Add custom module unit');
}
}
if (!empty($custom_unit_to_delete)) {
if (!delete_custom_module_unit($custom_unit_to_delete)) {
$error_update[] = __('Delete custom module unit');
}
}
// -------------------------------------------------- // --------------------------------------------------
if (!config_update_value('custom_report_info', get_parameter('custom_report_info'))) { if (!config_update_value('custom_report_info', get_parameter('custom_report_info'))) {
$error_update[] = __('Custom report info'); $error_update[] = __('Custom report info');
@ -1324,6 +1346,10 @@ function config_update_config()
if (!config_update_value('csv_divider', (string) get_parameter('csv_divider', ';'))) { if (!config_update_value('csv_divider', (string) get_parameter('csv_divider', ';'))) {
$error_update[] = __('CSV divider'); $error_update[] = __('CSV divider');
} }
if (!config_update_value('use_data_multiplier', get_parameter('use_data_multiplier', '1'))) {
$error_update[] = __('Use data multiplier');
}
break; break;
case 'net': case 'net':
@ -2820,6 +2846,10 @@ function config_process_config()
config_update_value('csv_divider', ';'); config_update_value('csv_divider', ';');
} }
if (!isset($config['use_data_multiplier'])) {
config_update_value('use_data_multiplier', '1');
}
if (!isset($config['command_snapshot'])) { if (!isset($config['command_snapshot'])) {
config_update_value('command_snapshot', 1); config_update_value('command_snapshot', 1);
} }

View File

@ -624,7 +624,37 @@ function events_update_status($id_evento, $status, $filter=null, $history=false)
break; break;
} }
return db_process_sql($update_sql); $result = db_process_sql($update_sql);
if ($result) {
switch ($status) {
case EVENT_STATUS_NEW:
$status_string = 'New';
break;
case EVENT_STATUS_VALIDATED:
$status_string = 'Validated';
break;
case EVENT_STATUS_INPROCESS:
$status_string = 'In process';
break;
default:
$status_string = '';
break;
}
events_comment(
$id_evento,
'',
'Change status to '.$status_string,
is_metaconsole() ? true : false,
$history
);
}
return $result;
} }
@ -751,43 +781,78 @@ function events_get_all(
} }
if (isset($filter['severity']) && $filter['severity'] > 0) { if (isset($filter['severity']) && $filter['severity'] > 0) {
switch ($filter['severity']) { if (is_array($filter['severity'])) {
case EVENT_CRIT_MAINTENANCE: if (!in_array(-1, $filter['severity'])) {
case EVENT_CRIT_INFORMATIONAL: $not_normal = array_search(EVENT_CRIT_NOT_NORMAL, $filter['severity']);
case EVENT_CRIT_NORMAL: if ($not_normal !== false) {
case EVENT_CRIT_MINOR: unset($filter['severity'][$not_normal]);
case EVENT_CRIT_WARNING: $sql_filters[] = sprintf(
case EVENT_CRIT_MAJOR: ' AND criticity != %d',
case EVENT_CRIT_CRITICAL: EVENT_CRIT_NORMAL
default: );
$sql_filters[] = sprintf( } else {
' AND criticity = %d ', $critical_warning = array_search(EVENT_CRIT_WARNING_OR_CRITICAL, $filter['severity']);
$filter['severity'] if ($critical_warning !== false) {
); unset($filter['severity'][$critical_warning]);
break; $filter['severity'][] = EVENT_CRIT_WARNING;
$filter['severity'][] = EVENT_CRIT_CRITICAL;
}
case EVENT_CRIT_WARNING_OR_CRITICAL: $critical_normal = array_search(EVENT_CRIT_OR_NORMAL, $filter['severity']);
$sql_filters[] = sprintf( if ($critical_normal !== false) {
' AND (criticity = %d OR criticity = %d)', unset($filter['severity'][$critical_normal]);
EVENT_CRIT_WARNING, $filter['severity'][] = EVENT_CRIT_NORMAL;
EVENT_CRIT_CRITICAL $filter['severity'][] = EVENT_CRIT_CRITICAL;
); }
break;
case EVENT_CRIT_NOT_NORMAL: if (!empty($filter['severity'])) {
$sql_filters[] = sprintf( $filter['severity'] = implode(',', $filter['severity']);
' AND criticity != %d', $sql_filters[] = sprintf(
EVENT_CRIT_NORMAL ' AND criticity IN (%s)',
); $filter['severity']
break; );
}
}
}
} else {
switch ($filter['severity']) {
case EVENT_CRIT_MAINTENANCE:
case EVENT_CRIT_INFORMATIONAL:
case EVENT_CRIT_NORMAL:
case EVENT_CRIT_MINOR:
case EVENT_CRIT_WARNING:
case EVENT_CRIT_MAJOR:
case EVENT_CRIT_CRITICAL:
default:
$sql_filters[] = sprintf(
' AND criticity = %d ',
$filter['severity']
);
break;
case EVENT_CRIT_OR_NORMAL: case EVENT_CRIT_WARNING_OR_CRITICAL:
$sql_filters[] = sprintf( $sql_filters[] = sprintf(
' AND (criticity = %d OR criticity = %d)', ' AND (criticity = %d OR criticity = %d)',
EVENT_CRIT_NORMAL, EVENT_CRIT_WARNING,
EVENT_CRIT_CRITICAL EVENT_CRIT_CRITICAL
); );
break; break;
case EVENT_CRIT_NOT_NORMAL:
$sql_filters[] = sprintf(
' AND criticity != %d',
EVENT_CRIT_NORMAL
);
break;
case EVENT_CRIT_OR_NORMAL:
$sql_filters[] = sprintf(
' AND (criticity = %d OR criticity = %d)',
EVENT_CRIT_NORMAL,
EVENT_CRIT_CRITICAL
);
break;
}
} }
} }

View File

@ -106,12 +106,8 @@ if (!function_exists('mime_content_type')) {
finfo_close($finfo); finfo_close($finfo);
return $mimetype; return $mimetype;
} else { } else {
$temp = exec('file '.$filename); error_log('Warning: Cannot find finfo_open function. Fileinfo extension is not enabled. Please add "extension=fileinfo.so" or "extension=fileinfo.dll" in your php.ini');
if (isset($temp) && $temp != '') { return 'unknown';
return $temp;
} else {
return 'application/octet-stream';
}
} }
} }
@ -694,8 +690,9 @@ function filemanager_file_explorer(
$data[1] = '<a href="'.$url_file_clean.'">'.$fileinfo['name'].'</a>'; $data[1] = '<a href="'.$url_file_clean.'">'.$fileinfo['name'].'</a>';
} else { } else {
$hash = md5($relative_path.$config['dbpass']); $filename = base64_encode($relative_directory.'/'.$fileinfo['name']);
$data[1] = '<a href="'.$hack_metaconsole.'include/get_file.php?file='.urlencode(base64_encode($relative_path)).'&hash='.$hash.'">'.$fileinfo['name'].'</a>'; $hash = md5($filename.$config['dbpass']);
$data[1] = '<a href="'.$hack_metaconsole.'include/get_file.php?file='.urlencode($filename).'&hash='.$hash.'">'.$fileinfo['name'].'</a>';
} }
// Notice that uploaded php files could be dangerous // Notice that uploaded php files could be dangerous
@ -755,8 +752,9 @@ function filemanager_file_explorer(
} }
if ((!$fileinfo['is_dir']) && ($download_button)) { if ((!$fileinfo['is_dir']) && ($download_button)) {
$hash = md5($fileinfo['realpath'].$config['dbpass']); $filename = base64_encode($fileinfo['name']);
$data[4] .= '<a href="include/get_file.php?file='.urlencode(base64_encode($fileinfo['realpath'])).'&hash='.$hash.'" style="vertical-align: 25%;">'; $hash = md5($filename.$config['dbpass']);
$data[4] .= '<a href="include/get_file.php?file='.urlencode($filename).'&hash='.$hash.'" style="vertical-align: 25%;">';
$data[4] .= html_print_image('images/file.png', true); $data[4] .= html_print_image('images/file.png', true);
$data[4] .= '</a>'; $data[4] .= '</a>';
} }

View File

@ -572,7 +572,7 @@ function grafico_modulo_sparse_data(
/** /**
* Functions tu create graphs. * Functions to create graphs.
* *
* @param array $params Details builds graphs. For example: * @param array $params Details builds graphs. For example:
* 'agent_module_id' => $agent_module_id, * 'agent_module_id' => $agent_module_id,
@ -856,6 +856,10 @@ function grafico_modulo_sparse($params)
} }
} }
if (empty($params['divisor'])) {
$params['divisor'] = get_data_multiplier($params['unit']);
}
if (!$params['array_data_create']) { if (!$params['array_data_create']) {
if ($params['baseline']) { if ($params['baseline']) {
$array_data = get_baseline_data( $array_data = get_baseline_data(
@ -1478,6 +1482,10 @@ function graphic_combined_module(
$data_module_graph['module_id'] = $agent_module_id; $data_module_graph['module_id'] = $agent_module_id;
$data_module_graph['unit'] = $module_data['unit']; $data_module_graph['unit'] = $module_data['unit'];
$params['unit'] = $module_data['unit'];
$params['divisor'] = get_data_multiplier($params['unit']);
// Stract data. // Stract data.
$array_data_module = grafico_modulo_sparse_data( $array_data_module = grafico_modulo_sparse_data(
$agent_module_id, $agent_module_id,

View File

@ -798,6 +798,10 @@ function html_print_extended_select_for_unit(
$fields['_timeticks_'] = 'Timeticks'; $fields['_timeticks_'] = 'Timeticks';
$fields['none'] = __('none'); $fields['none'] = __('none');
$default_module_custom_units = get_custom_module_units();
$fields = array_merge($fields, $default_module_custom_units);
if ($no_change != 0) { if ($no_change != 0) {
$fields[-1] = __('No change'); $fields[-1] = __('No change');
} }
@ -988,20 +992,24 @@ function html_print_extended_select_for_post_process(
/** /**
* Render a pair of select for times and text box for set the time more fine. * Render a pair of select for times and text box for set the time more fine.
* *
* @param string Select form name * @param string $name Select form name
* @param variant Current selected value. Can be a single value or an * @param variant $selected Current selected value. Can be a single value or an array of selected values (in combination with multiple)
* array of selected values (in combination with multiple) * @param string $script Javascript onChange (select) code.
* @param string Javascript onChange (select) code. * @param string $nothing Label when nothing is selected.
* @param string Label when nothing is selected. * @param variant $nothing_value Value when nothing is selected
* @param variant Value when nothing is selected * @param integer $size Size of the input.
* @param integer $size Size of the input. * @param boolean $return Whether to return an output string or echo now (optional, echo by default).
* @param bool Whether to return an output string or echo now (optional, echo by default). * @param boolean $select_style Wherter to assign to combo a unique name (to have more than one on same page, like dashboard)
* @param bool Wherter to assign to combo a unique name (to have more than one on same page, like dashboard) * @param boolean $unique_name
* * @param string $class
* @param boolean $readonly
* @param string $custom_fields
* @param string $style_icon
* @param boolean $no_change
* @param boolean $allow_zero Allow the use of the value zero.
* @return string HTML code if return parameter is true. * @return string HTML code if return parameter is true.
*/ */
function html_print_extended_select_for_time( function html_print_extended_select_for_time(
$name, $name,
$selected='', $selected='',
@ -1016,14 +1024,15 @@ function html_print_extended_select_for_time(
$readonly=false, $readonly=false,
$custom_fields=false, $custom_fields=false,
$style_icon='', $style_icon='',
$no_change=false $no_change=false,
$allow_zero=false
) { ) {
global $config; global $config;
$admin = is_user_admin($config['id_user']); $admin = is_user_admin($config['id_user']);
if ($custom_fields) { if ($custom_fields) {
$fields = $custom_fields; $fields = $custom_fields;
} else { } else {
$fields = get_periods(); $fields = get_periods(true, true, $allow_zero);
} }
if ($no_change) { if ($no_change) {
@ -1045,7 +1054,14 @@ function html_print_extended_select_for_time(
} }
} }
if (($selected !== false) && (!isset($fields[$selected]) && $selected != 0)) { // Allow the use of the value zero.
if ($allow_zero === true) {
$selected_zero = true;
} else {
$selected_zero = ($selected != 0) ? true : false;
}
if (($selected !== false) && (!isset($fields[$selected]) && $selected_zero)) {
$fields[$selected] = human_time_description_raw($selected, true); $fields[$selected] = human_time_description_raw($selected, true);
} }
@ -1136,7 +1152,7 @@ function html_print_extended_select_for_time(
echo '</div>'; echo '</div>';
echo "<script type='text/javascript'> echo "<script type='text/javascript'>
$(document).ready (function () { $(document).ready (function () {
period_select_init('$uniq_name'); period_select_init('$uniq_name', $allow_zero);
period_select_events('$uniq_name'); period_select_events('$uniq_name');
}); });
function period_select_".$name."_update(seconds) { function period_select_".$name."_update(seconds) {
@ -1178,8 +1194,13 @@ function html_print_extended_select_for_cron($hour='*', $minute='*', $mday='*',
} }
// Minutes // Minutes
for ($i = 0; $i < 60; $i += 5) { for ($i = 0; $i < 60; $i++) {
$minutes[$i] = $i; $minutes[$i] = $i;
// If minute is not a multiple of 5, then add style to option in order to hide it from minute select but still is a valid value that input can adopt. We want this in case a value that is not a multiple of 5 is entered in module's data configuration.
if (($i % 5) != 0) {
$minutes_hidden_options[$i] = 'display: none;';
}
} }
// Month days // Month days
@ -1216,13 +1237,13 @@ function html_print_extended_select_for_cron($hour='*', $minute='*', $mday='*',
if ($to) { if ($to) {
$table->data[0][0] = html_print_select($hours, 'hour_to', $hour, '', __('Any'), '*', true, false, false, '', $disabled); $table->data[0][0] = html_print_select($hours, 'hour_to', $hour, '', __('Any'), '*', true, false, false, '', $disabled);
$table->data[0][1] = html_print_select($minutes, 'minute_to', $minute, '', __('Any'), '*', true, false, false, '', $disabled); $table->data[0][1] = html_print_select($minutes, 'minute_to', $minute, '', __('Any'), '*', true, false, false, '', $disabled, false, $minutes_hidden_options);
$table->data[0][2] = html_print_select($mdays, 'mday_to', $mday, '', __('Any'), '*', true, false, false, '', $disabled); $table->data[0][2] = html_print_select($mdays, 'mday_to', $mday, '', __('Any'), '*', true, false, false, '', $disabled);
$table->data[0][3] = html_print_select($months, 'month_to', $month, '', __('Any'), '*', true, false, false, '', $disabled); $table->data[0][3] = html_print_select($months, 'month_to', $month, '', __('Any'), '*', true, false, false, '', $disabled);
$table->data[0][4] = html_print_select($wdays, 'wday_to', $wday, '', __('Any'), '*', true, false, false, '', $disabled); $table->data[0][4] = html_print_select($wdays, 'wday_to', $wday, '', __('Any'), '*', true, false, false, '', $disabled);
} else { } else {
$table->data[0][0] = html_print_select($hours, 'hour_from', $hour, '', __('Any'), '*', true, false, false, '', $disabled); $table->data[0][0] = html_print_select($hours, 'hour_from', $hour, '', __('Any'), '*', true, false, false, '', $disabled);
$table->data[0][1] = html_print_select($minutes, 'minute_from', $minute, '', __('Any'), '*', true, false, false, '', $disabled); $table->data[0][1] = html_print_select($minutes, 'minute_from', $minute, '', __('Any'), '*', true, false, false, '', $disabled, false, $minutes_hidden_options);
$table->data[0][2] = html_print_select($mdays, 'mday_from', $mday, '', __('Any'), '*', true, false, false, '', $disabled); $table->data[0][2] = html_print_select($mdays, 'mday_from', $mday, '', __('Any'), '*', true, false, false, '', $disabled);
$table->data[0][3] = html_print_select($months, 'month_from', $month, '', __('Any'), '*', true, false, false, '', $disabled); $table->data[0][3] = html_print_select($months, 'month_from', $month, '', __('Any'), '*', true, false, false, '', $disabled);
$table->data[0][4] = html_print_select($wdays, 'wday_from', $wday, '', __('Any'), '*', true, false, false, '', $disabled); $table->data[0][4] = html_print_select($wdays, 'wday_from', $wday, '', __('Any'), '*', true, false, false, '', $disabled);

View File

@ -2133,6 +2133,8 @@ function modules_get_agentmodule_data(
// remote_snmp_string // remote_snmp_string
case 17: case 17:
// async_string // async_string
case 36:
// remote_cmd_string
case 23: case 23:
// Free search is a json with value and exact modifier // Free search is a json with value and exact modifier
$freesearch = json_decode($freesearch, true); $freesearch = json_decode($freesearch, true);

View File

@ -1453,6 +1453,20 @@ function networkmap_delete_nodes($id_map)
} }
/**
* Delete relations given id_map
*
* @param integer $id_map
* @return integer result
*/
function networkmap_delete_relations($id_map)
{
$result = db_process_sql_delete('trel_item', ['id_map' => $id_map]);
return $result;
}
function get_networkmaps($id) function get_networkmaps($id)
{ {
$groups = array_keys(users_get_groups(null, 'IW')); $groups = array_keys(users_get_groups(null, 'IW'));

View File

@ -190,6 +190,8 @@ function reporting_make_reporting_data(
$metaconsole_on = is_metaconsole(); $metaconsole_on = is_metaconsole();
$index_content = 0; $index_content = 0;
foreach ($contents as $content) { foreach ($contents as $content) {
$content['name'] = io_safe_input($content['name']);
$content['description'] = io_safe_input($content['description']);
if (!empty($content['id_agent_module']) && !empty($content['id_agent']) if (!empty($content['id_agent_module']) && !empty($content['id_agent'])
&& tags_has_user_acl_tags($config['id_user']) && tags_has_user_acl_tags($config['id_user'])
) { ) {
@ -1580,7 +1582,10 @@ function reporting_event_top_n(
$data['module'] = $module_name[$i]; $data['module'] = $module_name[$i];
$data['value'] = $dt; $data['value'] = $dt;
$data['formated_value'] = format_for_graph($dt, 2).' '.$units[$i];
$divisor = get_data_multiplier($units[$i]);
$data['formated_value'] = format_for_graph($dt, 2, '.', ',', $divisor, $units[$i]);
$data_return[] = $data; $data_return[] = $data;
} }
@ -1633,12 +1638,15 @@ function reporting_event_top_n(
$data_pie_graph[$item_name] = $data_top[$i]; $data_pie_graph[$item_name] = $data_top[$i];
$data_hbar[$item_name]['g'] = $data_top[$i]; $data_hbar[$item_name]['g'] = $data_top[$i];
$divisor = get_data_multiplier($units[$i]);
if ($show_graph == 0 || $show_graph == 1) { if ($show_graph == 0 || $show_graph == 1) {
$data = []; $data = [];
$data['agent'] = $an; $data['agent'] = $an;
$data['module'] = $module_name[$i]; $data['module'] = $module_name[$i];
$data['value'] = $data_top[$i]; $data['value'] = $data_top[$i];
$data['formated_value'] = format_for_graph($data_top[$i], 2).' '.$units[$i]; $data['formated_value'] = format_for_graph($data_top[$i], 2, '.', ',', $divisor, $units[$i]);
$data_return[] = $data; $data_return[] = $data;
} }
@ -1714,14 +1722,15 @@ function reporting_event_top_n(
$i++; $i++;
} }
$unit = $data_top_values['units'][0];
$avg = ($avg / $i); $avg = ($avg / $i);
$return['resume']['min']['value'] = $min; $return['resume']['min']['value'] = $min;
$return['resume']['min']['formated_value'] = format_for_graph($min, 2); $return['resume']['min']['formated_value'] = format_for_graph($min, 2, '.', ',', $divisor, $unit);
$return['resume']['avg']['value'] = $avg; $return['resume']['avg']['value'] = $avg;
$return['resume']['avg']['formated_value'] = format_for_graph($avg, 2); $return['resume']['avg']['formated_value'] = format_for_graph($avg, 2, '.', ',', $divisor, $unit);
$return['resume']['max']['value'] = $max; $return['resume']['max']['value'] = $max;
$return['resume']['max']['formated_value'] = format_for_graph($max, 2); $return['resume']['max']['formated_value'] = format_for_graph($max, 2, '.', ',', $divisor, $unit);
} }
$return['data'] = $data_return; $return['data'] = $data_return;
@ -4286,14 +4295,7 @@ function reporting_sql_graph(
case 'data': case 'data':
$data = []; $data = [];
foreach ($modules as $key => $value) { $data = db_get_all_rows_sql($content['external_source']);
$data[$value] = modules_get_agentmodule_data(
$value,
$content['period'],
$report['datetime']
);
}
$return['chart'] = $data; $return['chart'] = $data;
break; break;
} }
@ -4902,6 +4904,8 @@ function reporting_value($report, $content, $type, $pdf=false)
case 'max': case 'max':
case 'min': case 'min':
case 'avg': case 'avg':
$divisor = get_data_multiplier($unit);
if ($content['lapse_calc'] == 0) { if ($content['lapse_calc'] == 0) {
switch ($type) { switch ($type) {
case 'max': case 'max':
@ -4932,7 +4936,7 @@ function reporting_value($report, $content, $type, $pdf=false)
if (!$config['simple_module_value']) { if (!$config['simple_module_value']) {
$formated_value = $value; $formated_value = $value;
} else { } else {
$formated_value = format_for_graph($value, $config['graph_precision']).' '.$unit; $formated_value = format_for_graph($value, $config['graph_precision'], '.', ',', $divisor, $unit);
} }
} else { } else {
$return['visual_format'] = $content['visual_format']; $return['visual_format'] = $content['visual_format'];
@ -4940,17 +4944,17 @@ function reporting_value($report, $content, $type, $pdf=false)
switch ($type) { switch ($type) {
case 'max': case 'max':
$params['force_interval'] = 'max_only'; $params['force_interval'] = 'max_only';
$value = format_for_graph(reporting_get_agentmodule_data_max($content['id_agent_module'], $content['period'], $report['datetime']), $config['graph_precision']).' '.$unit; $value = format_for_graph(reporting_get_agentmodule_data_max($content['id_agent_module'], $content['period'], $report['datetime']), $config['graph_precision'], '.', ',', $divisor, $unit);
break; break;
case 'min': case 'min':
$params['force_interval'] = 'min_only'; $params['force_interval'] = 'min_only';
$value = format_for_graph(reporting_get_agentmodule_data_min($content['id_agent_module'], $content['period'], $report['datetime']), $config['graph_precision']).' '.$unit; $value = format_for_graph(reporting_get_agentmodule_data_min($content['id_agent_module'], $content['period'], $report['datetime']), $config['graph_precision'], '.', ',', $divisor, $unit);
break; break;
case 'avg': case 'avg':
$params['force_interval'] = 'avg_only'; $params['force_interval'] = 'avg_only';
$value = format_for_graph(reporting_get_agentmodule_data_average($content['id_agent_module'], $content['period'], $report['datetime']), $config['graph_precision']).' '.$unit; $value = format_for_graph(reporting_get_agentmodule_data_average($content['id_agent_module'], $content['period'], $report['datetime']), $config['graph_precision'], '.', ',', $divisor, $unit);
break; break;
} }
@ -4980,15 +4984,15 @@ function reporting_value($report, $content, $type, $pdf=false)
if ($i > $time_begin['utimestamp']) { if ($i > $time_begin['utimestamp']) {
switch ($type) { switch ($type) {
case 'max': case 'max':
$row[__('Maximun')] = format_for_graph(reporting_get_agentmodule_data_max($content['id_agent_module'], $content['lapse'], ($i + $content['lapse'])), $config['graph_precision']).' '.$unit; $row[__('Maximun')] = format_for_graph(reporting_get_agentmodule_data_max($content['id_agent_module'], $content['lapse'], ($i + $content['lapse'])), $config['graph_precision'], '.', ',', $divisor, $unit);
break; break;
case 'min': case 'min':
$row[__('Maximun')] = format_for_graph(reporting_get_agentmodule_data_min($content['id_agent_module'], $content['lapse'], ($i + $content['lapse'])), $config['graph_precision']).' '.$unit; $row[__('Maximun')] = format_for_graph(reporting_get_agentmodule_data_min($content['id_agent_module'], $content['lapse'], ($i + $content['lapse'])), $config['graph_precision'], '.', ',', $divisor, $unit);
break; break;
case 'avg': case 'avg':
$row[__('Maximun')] = format_for_graph(reporting_get_agentmodule_data_average($content['id_agent_module'], $content['lapse'], ($i + $content['lapse'])), $config['graph_precision']).' '.$unit; $row[__('Maximun')] = format_for_graph(reporting_get_agentmodule_data_average($content['id_agent_module'], $content['lapse'], ($i + $content['lapse'])), $config['graph_precision'], '.', ',', $divisor, $unit);
break; break;
} }
} else { } else {
@ -5017,7 +5021,9 @@ function reporting_value($report, $content, $type, $pdf=false)
if (!$config['simple_module_value']) { if (!$config['simple_module_value']) {
$formated_value = $value; $formated_value = $value;
} else { } else {
$formated_value = format_for_graph($value, $config['graph_precision']).' '.$unit; $divisor = get_data_multiplier($unit);
$formated_value = format_for_graph($value, $config['graph_precision'], '.', ',', $divisor, $unit);
} }
break; break;
} }
@ -6250,27 +6256,6 @@ function reporting_availability($report, $content, $date=false, $time=false)
$return['kind_availability'] = 'module'; $return['kind_availability'] = 'module';
} }
if (empty($content['subitems'])) {
if (is_metaconsole()) {
metaconsole_restore_db();
}
$sql = sprintf(
'
SELECT id_agent_module,
server_name, operation
FROM treport_content_item
WHERE id_report_content = %d',
$content['id_rc']
);
$items = db_process_sql($sql);
} else {
$items = $content['subitems'];
}
$data = [];
$avg = 0; $avg = 0;
$min = null; $min = null;
$min_text = ''; $min_text = '';
@ -6278,180 +6263,241 @@ function reporting_availability($report, $content, $date=false, $time=false)
$max_text = ''; $max_text = '';
$count = 0; $count = 0;
$style = io_safe_output($content['style']); if ($content['failover_mode']) {
if ($style['hide_notinit_agents']) { $availability_graph_data = reporting_availability_graph($report, $content, false, true);
$aux_id_agents = $agents; $data = $availability_graph_data['data'];
$i = 0;
foreach ($items as $item) { foreach ($data as $key => $item_data) {
$utimestamp = db_get_value('utimestamp', 'tagente_datos', 'id_agente_modulo', $item['id_agent_module'], true); $percent_ok = $item_data['sla_value'];
if (($utimestamp === false) || (intval($utimestamp) > intval($datetime_to))) { $data[$key]['SLA'] = $percent_ok;
unset($items[$i]);
if ($item_data['failover'] != 'result') {
$data[$key]['availability_item'] = $item_data['module'];
$text = $item_data['agent'].' ('.$item_data['module'].')';
$avg = ((($avg * $count) + $percent_ok) / ($count + 1));
if (is_null($min)) {
$min = $percent_ok;
$min_text = $text;
} else {
if ($min > $percent_ok) {
$min = $percent_ok;
$min_text = $text;
}
}
if (is_null($max)) {
$max = $percent_ok;
$max_text = $text;
} else {
if ($max < $percent_ok) {
$max = $percent_ok;
$max_text = $text;
}
}
$count++;
} else {
$data[$key]['availability_item'] = '--';
$data[$key]['agent'] = '--';
}
}
} else {
if (empty($content['subitems'])) {
if (is_metaconsole()) {
metaconsole_restore_db();
} }
$i++; $sql = sprintf(
} '
} SELECT id_agent_module, id_agent_module_failover,
server_name, operation
FROM treport_content_item
WHERE id_report_content = %d',
$content['id_rc']
);
$items = db_process_sql($sql);
} else {
$items = $content['subitems'];
}
$data = [];
$style = io_safe_output($content['style']);
if ($style['hide_notinit_agents']) {
$aux_id_agents = $agents;
$i = 0;
foreach ($items as $item) {
$utimestamp = db_get_value('utimestamp', 'tagente_datos', 'id_agente_modulo', $item['id_agent_module'], true);
if (($utimestamp === false) || (intval($utimestamp) > intval($datetime_to))) {
unset($items[$i]);
}
$i++;
}
}
if (!empty($items)) {
foreach ($items as $item) {
// aaMetaconsole connection
$server_name = $item['server_name'];
if (($config['metaconsole'] == 1) && $server_name != '' && is_metaconsole()) {
$connection = metaconsole_get_connection($server_name);
if (metaconsole_load_external_db($connection) != NOERR) {
// ui_print_error_message ("Error connecting to ".$server_name);
continue;
}
}
if (modules_is_disable_agent($item['id_agent_module'])
|| modules_is_not_init($item['id_agent_module'])
) {
// Restore dbconnection
if (($config['metaconsole'] == 1) && $server_name != '' && is_metaconsole()) {
metaconsole_restore_db();
}
if (!empty($items)) {
foreach ($items as $item) {
// aaMetaconsole connection
$server_name = $item['server_name'];
if (($config['metaconsole'] == 1) && $server_name != '' && is_metaconsole()) {
$connection = metaconsole_get_connection($server_name);
if (metaconsole_load_external_db($connection) != NOERR) {
// ui_print_error_message ("Error connecting to ".$server_name);
continue; continue;
} }
}
if (modules_is_disable_agent($item['id_agent_module']) $row = [];
|| modules_is_not_init($item['id_agent_module'])
) { $text = '';
$row['data'] = reporting_advanced_sla(
$item['id_agent_module'],
($report['datetime'] - $content['period']),
$report['datetime'],
null,
// min_value -> dynamic
null,
// max_value -> dynamic
null,
// inverse_interval -> dynamic
[
'1' => $content['sunday'],
'2' => $content['monday'],
'3' => $content['tuesday'],
'4' => $content['wednesday'],
'5' => $content['thursday'],
'6' => $content['friday'],
'7' => $content['saturday'],
],
$content['time_from'],
$content['time_to']
);
// HACK it is saved in show_graph field.
// Show interfaces instead the modules
if ($content['show_graph']) {
$text = $row['data']['availability_item'] = agents_get_address(
modules_get_agentmodule_agent($item['id_agent_module'])
);
if (empty($text)) {
$text = $row['data']['availability_item'] = __('No Address');
}
} else {
$text = $row['data']['availability_item'] = modules_get_agentmodule_name(
$item['id_agent_module']
);
}
$row['data']['agent'] = modules_get_agentmodule_agent_alias(
$item['id_agent_module']
);
$text = $row['data']['agent'].' ('.$text.')';
// Restore dbconnection // Restore dbconnection
if (($config['metaconsole'] == 1) && $server_name != '' && is_metaconsole()) { if (($config['metaconsole'] == 1) && $server_name != '' && is_metaconsole()) {
metaconsole_restore_db(); metaconsole_restore_db();
} }
continue; // find order
} $row['data']['order'] = $row['data']['SLA'];
$row = []; $percent_ok = $row['data']['SLA'];
$avg = ((($avg * $count) + $percent_ok) / ($count + 1));
$text = ''; if (is_null($min)) {
$row['data'] = reporting_advanced_sla(
$item['id_agent_module'],
($report['datetime'] - $content['period']),
$report['datetime'],
null,
// min_value -> dynamic
null,
// max_value -> dynamic
null,
// inverse_interval -> dynamic
[
'1' => $content['sunday'],
'2' => $content['monday'],
'3' => $content['tuesday'],
'4' => $content['wednesday'],
'5' => $content['thursday'],
'6' => $content['friday'],
'7' => $content['saturday'],
],
$content['time_from'],
$content['time_to']
);
// HACK it is saved in show_graph field.
// Show interfaces instead the modules
if ($content['show_graph']) {
$text = $row['data']['availability_item'] = agents_get_address(
modules_get_agentmodule_agent($item['id_agent_module'])
);
if (empty($text)) {
$text = $row['data']['availability_item'] = __('No Address');
}
} else {
$text = $row['data']['availability_item'] = modules_get_agentmodule_name(
$item['id_agent_module']
);
}
$row['data']['agent'] = modules_get_agentmodule_agent_alias(
$item['id_agent_module']
);
$text = $row['data']['agent'].' ('.$text.')';
// Restore dbconnection
if (($config['metaconsole'] == 1) && $server_name != '' && is_metaconsole()) {
metaconsole_restore_db();
}
// find order
$row['data']['order'] = $row['data']['SLA'];
$percent_ok = $row['data']['SLA'];
$avg = ((($avg * $count) + $percent_ok) / ($count + 1));
if (is_null($min)) {
$min = $percent_ok;
$min_text = $text;
} else {
if ($min > $percent_ok) {
$min = $percent_ok; $min = $percent_ok;
$min_text = $text; $min_text = $text;
} else {
if ($min > $percent_ok) {
$min = $percent_ok;
$min_text = $text;
}
} }
}
if (is_null($max)) { if (is_null($max)) {
$max = $percent_ok;
$max_text = $text;
} else {
if ($max < $percent_ok) {
$max = $percent_ok; $max = $percent_ok;
$max_text = $text; $max_text = $text;
} else {
if ($max < $percent_ok) {
$max = $percent_ok;
$max_text = $text;
}
} }
$data[] = $row['data'];
$count++;
} }
$data[] = $row['data']; switch ($content['order_uptodown']) {
$count++; case REPORT_ITEM_ORDER_BY_AGENT_NAME:
} $temp = [];
foreach ($data as $row) {
$i = 0;
foreach ($temp as $t_row) {
if (strcmp($row['data']['agent'], $t_row['agent']) < 0) {
break;
}
switch ($content['order_uptodown']) { $i++;
case REPORT_ITEM_ORDER_BY_AGENT_NAME:
$temp = [];
foreach ($data as $row) {
$i = 0;
foreach ($temp as $t_row) {
if (strcmp($row['data']['agent'], $t_row['agent']) < 0) {
break;
} }
$i++; array_splice($temp, $i, 0, [$row]);
} }
array_splice($temp, $i, 0, [$row]); $data = $temp;
} break;
$data = $temp; case REPORT_ITEM_ORDER_BY_ASCENDING:
break; $temp = [];
foreach ($data as $row) {
$i = 0;
foreach ($temp as $t_row) {
if ($row['data']['SLA'] < $t_row['order']) {
break;
}
case REPORT_ITEM_ORDER_BY_ASCENDING: $i++;
$temp = [];
foreach ($data as $row) {
$i = 0;
foreach ($temp as $t_row) {
if ($row['data']['SLA'] < $t_row['order']) {
break;
} }
$i++; array_splice($temp, $i, 0, [$row]);
} }
array_splice($temp, $i, 0, [$row]); $data = $temp;
} break;
$data = $temp; case REPORT_ITEM_ORDER_BY_DESCENDING:
break; $temp = [];
foreach ($data as $row) {
$i = 0;
foreach ($temp as $t_row) {
if ($row['data']['SLA'] > $t_row['order']) {
break;
}
case REPORT_ITEM_ORDER_BY_DESCENDING: $i++;
$temp = [];
foreach ($data as $row) {
$i = 0;
foreach ($temp as $t_row) {
if ($row['data']['SLA'] > $t_row['order']) {
break;
} }
$i++; array_splice($temp, $i, 0, [$row]);
} }
array_splice($temp, $i, 0, [$row]); $data = $temp;
} break;
}
$data = $temp;
break;
} }
} }
@ -6490,7 +6536,7 @@ function reporting_availability($report, $content, $date=false, $time=false)
* *
* @return array Generates a structure the report. * @return array Generates a structure the report.
*/ */
function reporting_availability_graph($report, $content, $pdf=false) function reporting_availability_graph($report, $content, $pdf=false, $failover=false)
{ {
global $config; global $config;
$return = []; $return = [];
@ -6532,7 +6578,7 @@ function reporting_availability_graph($report, $content, $pdf=false)
$slas = io_safe_output( $slas = io_safe_output(
db_get_all_rows_field_filter( db_get_all_rows_field_filter(
'treport_content_sla_combined', ($failover) ? 'treport_content_item' : 'treport_content_sla_combined',
'id_report_content', 'id_report_content',
$content['id_rc'] $content['id_rc']
) )
@ -6937,9 +6983,19 @@ function prepare_data_for_paint(
$alias_agent = modules_get_agentmodule_agent_alias( $alias_agent = modules_get_agentmodule_agent_alias(
$sla['id_agent_module'] $sla['id_agent_module']
); );
$name_module = modules_get_agentmodule_name(
$sla['id_agent_module'] if ($content['show_graph']) {
); $name_module = agents_get_address(
modules_get_agentmodule_agent($sla['id_agent_module'])
);
if (empty($name_module)) {
$name_module = __('No Address');
}
} else {
$name_module = modules_get_agentmodule_name(
$sla['id_agent_module']
);
}
$data['agent'] = $alias_agent; $data['agent'] = $alias_agent;
$data['module'] = $name_module; $data['module'] = $name_module;
@ -7334,6 +7390,8 @@ function reporting_general($report, $content)
} }
} }
$divisor = get_data_multiplier($unit);
switch ($content['group_by_agent']) { switch ($content['group_by_agent']) {
case REPORT_GENERAL_NOT_GROUP_BY_AGENT: case REPORT_GENERAL_NOT_GROUP_BY_AGENT:
$id_agent_module[$index] = $row['id_agent_module']; $id_agent_module[$index] = $row['id_agent_module'];
@ -7364,7 +7422,7 @@ function reporting_general($report, $content)
if (!is_numeric($data_res[$index])) { if (!is_numeric($data_res[$index])) {
$return['data'][$name_agent][$mod_name] = $data_res[$index]; $return['data'][$name_agent][$mod_name] = $data_res[$index];
} else { } else {
$return['data'][$name_agent][$mod_name] = format_for_graph($data_res[$index], 2).' '.$unit; $return['data'][$name_agent][$mod_name] = format_for_graph($data_res[$index], 2, '.', ',', $divisor, $unit);
} }
} }
break; break;
@ -7383,7 +7441,7 @@ function reporting_general($report, $content)
if ($change_min) { if ($change_min) {
$return['min']['value'] = $data_res[$index]; $return['min']['value'] = $data_res[$index];
$return['min']['formated_value'] = format_for_graph($data_res[$index], 2).' '.$unit; $return['min']['formated_value'] = format_for_graph($data_res[$index], 2, '.', ',', $divisor, $unit);
$return['min']['agent'] = $ag_name; $return['min']['agent'] = $ag_name;
$return['min']['module'] = $mod_name; $return['min']['module'] = $mod_name;
} }
@ -7399,7 +7457,7 @@ function reporting_general($report, $content)
if ($change_max) { if ($change_max) {
$return['max']['value'] = $data_res[$index]; $return['max']['value'] = $data_res[$index];
$return['max']['formated_value'] = format_for_graph($data_res[$index], 2).' '.$unit; $return['max']['formated_value'] = format_for_graph($data_res[$index], 2, '.', ',', $divisor, $unit);
$return['max']['agent'] = $ag_name; $return['max']['agent'] = $ag_name;
$return['max']['module'] = $mod_name; $return['max']['module'] = $mod_name;
} }
@ -7517,13 +7575,15 @@ function reporting_general($report, $content)
break; break;
} }
$divisor = get_data_multiplier($units[$i]);
if (!is_numeric($d) || $is_string[$i]) { if (!is_numeric($d) || $is_string[$i]) {
$data['value'] = $d; $data['value'] = $d;
// to see the chains on the table // to see the chains on the table
$data['formated_value'] = $d; $data['formated_value'] = $d;
} else { } else {
$data['value'] = $d; $data['value'] = $d;
$data['formated_value'] = format_for_graph($d, 2).' '.$units[$i]; $data['formated_value'] = format_for_graph($d, 2, '.', ',', $divisor, $units[$i]);
} }
} }
@ -7640,7 +7700,7 @@ function reporting_custom_graph(
$return['title'] = $content['name']; $return['title'] = $content['name'];
$return['landscape'] = $content['landscape']; $return['landscape'] = $content['landscape'];
$return['pagebreak'] = $content['pagebreak']; $return['pagebreak'] = $content['pagebreak'];
$return['subtitle'] = io_safe_output($graph['name']); $return['subtitle'] = $graph['name'];
$return['agent_name'] = $agent_alias; $return['agent_name'] = $agent_alias;
$return['module_name'] = $module_name; $return['module_name'] = $module_name;
$return['description'] = $content['description']; $return['description'] = $content['description'];

View File

@ -130,7 +130,7 @@ function html_do_report_info($report)
$html .= '</tr> $html .= '</tr>
<tr> <tr>
<td valign="top"><b>'.__('Description').': </b></td><td>'.io_safe_output($report['description']).'</td> <td valign="top"><b>'.__('Description').': </b></td><td>'.htmlspecialchars($report['description']).'</td>
</tr> </tr>
</table>'.'</div>'; </table>'.'</div>';
@ -3028,6 +3028,10 @@ function reporting_html_availability($table, $item, $pdf=0)
$table1->data = []; $table1->data = [];
$table1->head = []; $table1->head = [];
if (isset($item['data'][0]['failover'])) {
$table1->head[-1] = __('Failover');
}
$table1->head[0] = __('Agent'); $table1->head[0] = __('Agent');
// HACK it is saved in show_graph field. // HACK it is saved in show_graph field.
// Show interfaces instead the modules. // Show interfaces instead the modules.
@ -3076,6 +3080,10 @@ function reporting_html_availability($table, $item, $pdf=0)
$table1->head[8] = __('% Ok'); $table1->head[8] = __('% Ok');
$table1->headstyle = []; $table1->headstyle = [];
if (isset($item['data'][0]['failover'])) {
$table1->headstyle[-1] = 'text-align: left';
}
$table1->headstyle[0] = 'text-align: left'; $table1->headstyle[0] = 'text-align: left';
$table1->headstyle[1] = 'text-align: left'; $table1->headstyle[1] = 'text-align: left';
$table1->headstyle[2] = 'text-align: center'; $table1->headstyle[2] = 'text-align: center';
@ -3086,6 +3094,10 @@ function reporting_html_availability($table, $item, $pdf=0)
$table1->headstyle[7] = 'text-align: right'; $table1->headstyle[7] = 'text-align: right';
$table1->headstyle[8] = 'text-align: right'; $table1->headstyle[8] = 'text-align: right';
if (isset($item['data'][0]['failover'])) {
$table1->style[-1] = 'text-align: left';
}
$table1->style[0] = 'text-align: left'; $table1->style[0] = 'text-align: left';
$table1->style[1] = 'text-align: left'; $table1->style[1] = 'text-align: left';
$table1->style[2] = 'text-align: center'; $table1->style[2] = 'text-align: center';
@ -3101,6 +3113,10 @@ function reporting_html_availability($table, $item, $pdf=0)
$table2->data = []; $table2->data = [];
$table2->head = []; $table2->head = [];
if (isset($item['data'][0]['failover'])) {
$table2->head[-1] = __('Failover');
}
$table2->head[0] = __('Agent'); $table2->head[0] = __('Agent');
// HACK it is saved in show_graph field. // HACK it is saved in show_graph field.
// Show interfaces instead the modules. // Show interfaces instead the modules.
@ -3135,6 +3151,10 @@ function reporting_html_availability($table, $item, $pdf=0)
} }
$table2->headstyle = []; $table2->headstyle = [];
if (isset($item['data'][0]['failover'])) {
$table2->headstyle[-1] = 'text-align: left';
}
$table2->headstyle[0] = 'text-align: left'; $table2->headstyle[0] = 'text-align: left';
$table2->headstyle[1] = 'text-align: left'; $table2->headstyle[1] = 'text-align: left';
$table2->headstyle[2] = 'text-align: right'; $table2->headstyle[2] = 'text-align: right';
@ -3142,6 +3162,10 @@ function reporting_html_availability($table, $item, $pdf=0)
$table2->headstyle[4] = 'text-align: right'; $table2->headstyle[4] = 'text-align: right';
$table2->headstyle[5] = 'text-align: right'; $table2->headstyle[5] = 'text-align: right';
if (isset($item['data'][0]['failover'])) {
$table2->style[-1] = 'text-align: left';
}
$table2->style[0] = 'text-align: left'; $table2->style[0] = 'text-align: left';
$table2->style[1] = 'text-align: left'; $table2->style[1] = 'text-align: left';
$table2->style[2] = 'text-align: right'; $table2->style[2] = 'text-align: right';
@ -3151,8 +3175,21 @@ function reporting_html_availability($table, $item, $pdf=0)
foreach ($item['data'] as $row) { foreach ($item['data'] as $row) {
$table_row = []; $table_row = [];
$table_row[] = $row['agent']; if (isset($row['failover'])) {
$table_row[] = $row['availability_item']; if (strpos($row['failover'], 'failover') !== false) {
$table_row[] = __('Failover');
} else {
$table_row[] = ucfirst($row['failover']);
}
}
if (isset($row['failover']) && $row['failover'] === 'result') {
$table_row[] = '--';
$table_row[] = '--';
} else {
$table_row[] = $row['agent'];
$table_row[] = $row['availability_item'];
}
if ($row['time_total'] != 0 && $item['fields']['total_time']) { if ($row['time_total'] != 0 && $item['fields']['total_time']) {
$table_row[] = human_time_description_raw( $table_row[] = human_time_description_raw(
@ -3229,6 +3266,10 @@ function reporting_html_availability($table, $item, $pdf=0)
$table_row[] = '<span style="font-size: '.$font_size.'; font-weight:bold;">'.sla_truncate($row['SLA'], $config['graph_precision']).'%</span>'; $table_row[] = '<span style="font-size: '.$font_size.'; font-weight:bold;">'.sla_truncate($row['SLA'], $config['graph_precision']).'%</span>';
$table_row2 = []; $table_row2 = [];
if (isset($row['failover'])) {
$table_row2[] = ucfirst($row['failover']);
}
$table_row2[] = $row['agent']; $table_row2[] = $row['agent'];
$table_row2[] = $row['availability_item']; $table_row2[] = $row['availability_item'];
if ($item['fields']['total_checks']) { if ($item['fields']['total_checks']) {

View File

@ -919,9 +919,10 @@ function servers_get_info($id_server=-1)
// Remote servers LAG Calculation (server_type != 0). // Remote servers LAG Calculation (server_type != 0).
if ($server['server_type'] != 0) { if ($server['server_type'] != 0) {
// MySQL 8.0 has function lag(). So, lag must be enclosed in quotations.
$result = db_get_row_sql( $result = db_get_row_sql(
'SELECT COUNT(tagente_modulo.id_agente_modulo) AS module_lag, 'SELECT COUNT(tagente_modulo.id_agente_modulo) AS module_lag,
AVG(UNIX_TIMESTAMP() - utimestamp - current_interval) AS lag AVG(UNIX_TIMESTAMP() - utimestamp - current_interval) AS "lag"
FROM tagente_estado, tagente_modulo, tagente FROM tagente_estado, tagente_modulo, tagente
WHERE utimestamp > 0 WHERE utimestamp > 0
AND tagente.disabled = 0 AND tagente.disabled = 0
@ -935,9 +936,10 @@ function servers_get_info($id_server=-1)
); );
} else { } else {
// Local/Dataserver server LAG calculation. // Local/Dataserver server LAG calculation.
// MySQL 8.0 has function lag(). So, lag must be enclosed in quotations.
$result = db_get_row_sql( $result = db_get_row_sql(
'SELECT COUNT(tagente_modulo.id_agente_modulo) AS module_lag, 'SELECT COUNT(tagente_modulo.id_agente_modulo) AS module_lag,
AVG(UNIX_TIMESTAMP() - utimestamp - current_interval) AS lag AVG(UNIX_TIMESTAMP() - utimestamp - current_interval) AS "lag"
FROM tagente_estado, tagente_modulo, tagente FROM tagente_estado, tagente_modulo, tagente
WHERE utimestamp > 0 WHERE utimestamp > 0
AND tagente.disabled = 0 AND tagente.disabled = 0

View File

@ -409,11 +409,20 @@ function snmp_browser_get_oid(
if ($server_to_exec != 0) { if ($server_to_exec != 0) {
$command_output = $snmptranslate_bin.' -m ALL -M +'.escapeshellarg($config['homedir'].'/attachment/mibs').' -Td '.escapeshellarg($oid); $command_output = $snmptranslate_bin.' -m ALL -M +'.escapeshellarg($config['homedir'].'/attachment/mibs').' -Td '.escapeshellarg($oid);
exec(
'ssh pandora_exec_proxy@'.$server_data['ip_address'].' "'.$command_output.'"', if (empty($server_data['port'])) {
$translate_output, exec(
$rc 'ssh pandora_exec_proxy@'.$server_data['ip_address'].' "'.$command_output.'"',
); $translate_output,
$rc
);
} else {
exec(
'ssh -p '.$server_data['port'].' pandora_exec_proxy@'.$server_data['ip_address'].' "'.$command_output.'"',
$translate_output,
$rc
);
}
} else { } else {
exec( exec(
$snmptranslate_bin.' -m ALL -M +'.escapeshellarg($config['homedir'].'/attachment/mibs').' -Td '.escapeshellarg($oid), $snmptranslate_bin.' -m ALL -M +'.escapeshellarg($config['homedir'].'/attachment/mibs').' -Td '.escapeshellarg($oid),

View File

@ -1892,7 +1892,13 @@ function ui_process_page_head($string, $bitfield)
} }
// Pandora specific JavaScript should go first. // Pandora specific JavaScript should go first.
$config['js'] = array_merge(['pandora' => 'include/javascript/pandora.js'], $config['js']); $config['js'] = array_merge(
[
'pandora' => 'include/javascript/pandora.js',
'pandora_ui' => 'include/javascript/pandora_ui.js',
],
$config['js']
);
// Load base64 javascript library. // Load base64 javascript library.
$config['js']['base64'] = 'include/javascript/encode_decode_base64.js'; $config['js']['base64'] = 'include/javascript/encode_decode_base64.js';
// Load webchat javascript library. // Load webchat javascript library.

View File

@ -1593,6 +1593,7 @@ function visual_map_print_item(
case CLOCK: case CLOCK:
if ((get_parameter('action') == 'edit') || (get_parameter('operation') == 'edit_visualmap')) { if ((get_parameter('action') == 'edit') || (get_parameter('operation') == 'edit_visualmap')) {
$image_prefix = (is_metaconsole()) ? '../../' : '';
if ($width == 0) { if ($width == 0) {
if ($layoutData['id_metaconsole'] != 0) { if ($layoutData['id_metaconsole'] != 0) {
if ($layoutData['clock_animation'] == 'analogic_1') { if ($layoutData['clock_animation'] == 'analogic_1') {
@ -1606,17 +1607,16 @@ function visual_map_print_item(
} }
} else { } else {
if ($layoutData['clock_animation'] == 'analogic_1') { if ($layoutData['clock_animation'] == 'analogic_1') {
$img = '<img src="images/console/signes/clock.png" style="width:200px;height:240px;">'; $img = '<img src="'.$image_prefix.'images/console/signes/clock.png" style="width:200px;height:240px;">';
} else { } else {
if ($layoutData['time_format'] == 'time') { if ($layoutData['time_format'] == 'time') {
$img = '<img src="images/console/signes/digital-clock.png" style="width:200px;height:71px">'; $img = '<img src="'.$image_prefix.'images/console/signes/digital-clock.png" style="width:200px;height:71px">';
} else { } else {
$img = '<img src="images/console/signes/digital-clock.png" style="width:200px;height:91px">'; $img = '<img src="'.$image_prefix.'images/console/signes/digital-clock.png" style="width:200px;height:91px">';
} }
} }
} }
} else { } else {
$image_prefix = ($layoutData['id_metaconsole'] != 0) ? '../../' : '';
if ($layoutData['clock_animation'] == 'analogic_1') { if ($layoutData['clock_animation'] == 'analogic_1') {
$img = '<img src="'.$image_prefix.'images/console/signes/clock.png" style="width:'.$width.'px;height:'.($width + 40).'px;">'; $img = '<img src="'.$image_prefix.'images/console/signes/clock.png" style="width:'.$width.'px;height:'.($width + 40).'px;">';
} else { } else {
@ -1901,7 +1901,7 @@ function visual_map_print_item(
} }
} else { } else {
$is_meta = is_metaconsole(); $is_meta = is_metaconsole();
$agents_critical = agents_get_agents( $agents_critical = agents_get_agents(
[ [
'disabled' => 0, 'disabled' => 0,

View File

@ -29,29 +29,42 @@ if ($auth_method != 'ad' && $auth_method != 'ldap') {
$styleError = 'background:url("../images/err.png") no-repeat scroll 0 0 transparent; padding:4px 1px 6px 30px; color:#CC0000;'; $styleError = 'background:url("../images/err.png") no-repeat scroll 0 0 transparent; padding:4px 1px 6px 30px; color:#CC0000;';
$file = get_parameter('file', null); $file_raw = get_parameter('file', null);
$file = base64_decode($file); $file = base64_decode(urldecode($file_raw));
$hash = get_parameter('hash', null); $hash = get_parameter('hash', null);
$testHash = md5($file.$config['dbpass']); if ($file === '' || $hash === '' || $hash !== md5($file_raw.$config['dbpass']) || !isset($_SERVER['HTTP_REFERER'])) {
if ($hash != $testHash) {
echo "<h3 style='".$styleError."'>".__('Security error. Please contact the administrator.').'</h3>'; echo "<h3 style='".$styleError."'>".__('Security error. Please contact the administrator.').'</h3>';
} else if (!empty($file) && !empty($hash)) { } else {
// echo $file; $downloadable_file = '';
if (!file_exists($file)) { $parse_all_queries = explode('&', parse_url($_SERVER['HTTP_REFERER'], PHP_URL_QUERY));
$file = $_SERVER['DOCUMENT_ROOT'].$file; $parse_sec2_query = explode('=', $parse_all_queries[1]);
if ($parse_sec2_query[0] === 'sec2') {
switch ($parse_sec2_query[1]) {
case 'godmode/setup/file_manager':
$downloadable_file = $_SERVER['DOCUMENT_ROOT'].'/pandora_console/'.$file;
break;
case 'extensions/files_repo':
$downloadable_file = $_SERVER['DOCUMENT_ROOT'].'/pandora_console/attachment/files_repo/'.$file;
break;
default:
$downloadable_file = '';
// Do nothing
break;
}
} }
if (!file_exists($file)) { if ($downloadable_file === '' || !file_exists($downloadable_file)) {
echo "<h3 style='".$styleError."'>".__('File is missing in disk storage. Please contact the administrator.').'</h3>'; echo "<h3 style='".$styleError."'>".__('File is missing in disk storage. Please contact the administrator.').'</h3>';
} else { } else {
header('Content-type: aplication/octet-stream;'); header('Content-type: aplication/octet-stream;');
header('Content-type: '.mime_content_type($file).';'); header('Content-type: '.mime_content_type($downloadable_file).';');
header('Content-Length: '.filesize($file)); header('Content-Length: '.filesize($downloadable_file));
header('Content-Disposition: attachment; filename="'.basename($file).'"'); header('Content-Disposition: attachment; filename="'.basename($downloadable_file).'"');
readfile($file); readfile($downloadable_file);
} }
} }

View File

@ -57,6 +57,9 @@ switch ($graph_type) {
$out_of_lim_str = io_safe_output(get_parameter('out_of_lim_str', false)); $out_of_lim_str = io_safe_output(get_parameter('out_of_lim_str', false));
$out_of_lim_image = get_parameter('out_of_lim_image', false); $out_of_lim_image = get_parameter('out_of_lim_image', false);
// Add relative path to avoid phar object injection.
$out_of_lim_image = '../graphs/'.$out_of_lim_image;
$title = get_parameter('title'); $title = get_parameter('title');
$mode = get_parameter('mode', 1); $mode = get_parameter('mode', 1);

View File

@ -1037,6 +1037,11 @@ function pandoraFlotArea(
var update_legend = {}; var update_legend = {};
var force_integer = 0; var force_integer = 0;
var title = params.title; var title = params.title;
var divisor = params.divisor;
if (typeof divisor === "undefined") {
divisor = 1000;
}
if (typeof type === "undefined" || type == "") { if (typeof type === "undefined" || type == "") {
type = params.type_graph; type = params.type_graph;
@ -2443,11 +2448,6 @@ function pandoraFlotArea(
} }
} }
var y_array = format_unit_yaxes(y);
y = y_array["y"];
var how_bigger = y_array["unit"];
var data_legend = []; var data_legend = [];
// The graphs of points type and unknown graphs will dont be updated // The graphs of points type and unknown graphs will dont be updated
@ -2465,10 +2465,7 @@ function pandoraFlotArea(
.html( .html(
label_aux + label_aux +
" value = " + " value = " +
(short_data number_format(y, 0, "", short_data, divisor) +
? number_format(y, 0, "", short_data)
: parseFloat(y)) +
how_bigger +
" " + " " +
unit unit
); );
@ -2516,20 +2513,11 @@ function pandoraFlotArea(
data_legend[index] = data_legend[index] =
" Min: " + " Min: " +
(short_data number_format(value[x].min, 0, unit, short_data, divisor) +
? number_format(min_y, 0, "", short_data)
: parseFloat(min_y)) +
min_bigger +
" Max: " + " Max: " +
(short_data number_format(value[x].max, 0, unit, short_data, divisor) +
? number_format(max_y, 0, "", short_data)
: parseFloat(max_y)) +
max_bigger +
" Avg: " + " Avg: " +
(short_data number_format(value[x].avg, 0, unit, short_data, divisor);
? number_format(avg_y, 0, "", short_data)
: parseFloat(avg_y)) +
avg_bigger;
}); });
label_aux = label_aux =
@ -2734,12 +2722,13 @@ function pandoraFlotArea(
function yFormatter(v) { function yFormatter(v) {
var formatted = v; var formatted = v;
if (short_data) { if (short_data) {
formatted = number_format(v, force_integer, "", short_data); formatted = number_format(v, force_integer, unit, short_data, divisor);
} else { } else {
// It is an integer. // It is an integer.
if (v - Math.floor(v) == 0) { if (v - Math.floor(v) == 0) {
formatted = number_format(v, force_integer, "", 2); formatted = number_format(v, force_integer, unit, 2, divisor);
} }
} }
@ -3067,7 +3056,18 @@ function check_adaptions(graph_id) {
}); });
} }
function number_format(number, force_integer, unit, short_data) { function number_format(number, force_integer, unit, short_data, divisor) {
divisor = typeof divisor !== "undefined" ? divisor : 1000;
if (unit == "KB") {
return number + unit;
}
// Set maximum decimal precision to 99 in case short_data is not set.
if (!short_data) {
short_data = 99;
}
if (force_integer) { if (force_integer) {
if (Math.round(number) != number) { if (Math.round(number) != number) {
return ""; return "";
@ -3080,17 +3080,15 @@ function number_format(number, force_integer, unit, short_data) {
var shorts = ["", "K", "M", "G", "T", "P", "E", "Z", "Y"]; var shorts = ["", "K", "M", "G", "T", "P", "E", "Z", "Y"];
var pos = 0; var pos = 0;
while (1) {
if (number >= 1000) { while (number >= divisor) {
//as long as the number can be divided by 1000 // As long as the number can be divided by 1000 or 1024.
pos++; //Position in array starting with 0 pos++;
number = number / 1000; number = number / divisor;
} else if (number <= -1000) { }
pos++;
number = number / 1000; if (divisor) {
} else { number = Math.round(number * decimals) / decimals;
break;
}
} }
return number + " " + shorts[pos] + unit; return number + " " + shorts[pos] + unit;

View File

@ -712,7 +712,7 @@ function post_process_select_init_unit(name, selected) {
}); });
if (select_or_text) { if (select_or_text) {
$("#" + name + "_select option[value=" + selected + "]").attr( $("#" + name + "_select option[value='" + selected + "']").attr(
"selected", "selected",
true true
); );
@ -728,7 +728,7 @@ function post_process_select_init_unit(name, selected) {
$("#" + name + "_select").change(function() { $("#" + name + "_select").change(function() {
var value = $("#" + name + "_select").val(); var value = $("#" + name + "_select").val();
$("#" + name + "_select option[value=" + value + "]").attr( $("#" + name + "_select option[value='" + value + "']").attr(
"selected", "selected",
true true
); );
@ -833,8 +833,9 @@ function post_process_select_events(name) {
* This function initialize the values of the control * This function initialize the values of the control
* *
* @param name string with the name of the select for time * @param name string with the name of the select for time
* @param allow_zero bool Allow the use of the value zero
*/ */
function period_select_init(name) { function period_select_init(name, allow_zero) {
// Manual mode is hidden by default // Manual mode is hidden by default
$("#" + name + "_manual").hide(); $("#" + name + "_manual").hide();
$("#" + name + "_default").show(); $("#" + name + "_default").show();
@ -849,7 +850,7 @@ function period_select_init(name) {
} else { } else {
$("#" + name + "_select option:eq(1)").prop("selected", true); $("#" + name + "_select option:eq(1)").prop("selected", true);
} }
} else if ($("#text-" + name + "_text").val() == 0) { } else if ($("#text-" + name + "_text").val() == 0 && allow_zero != true) {
$("#" + name + "_units option:last").prop("selected", false); $("#" + name + "_units option:last").prop("selected", false);
$("#" + name + "_manual").show(); $("#" + name + "_manual").show();
$("#" + name + "_default").hide(); $("#" + name + "_default").hide();
@ -1825,342 +1826,6 @@ function ellipsize(str, max, ellipse) {
return str.trim().length > max ? str.substr(0, max).trim() + ellipse : str; return str.trim().length > max ? str.substr(0, max).trim() + ellipse : str;
} }
/**
* Display a dialog with an image
*
* @param {string} icon_name The name of the icon you will display
* @param {string} icon_path The path to the icon
* @param {Object} incoming_options All options
* grayed: {bool} True to display the background black
* title {string} 'Logo preview' by default
*/
function logo_preview(icon_name, icon_path, incoming_options) {
// Get the options
options = {
grayed: false,
title: "Logo preview"
};
$.extend(options, incoming_options);
if (icon_name == "") return;
$dialog = $("<div></div>");
$image = $('<img src="' + icon_path + '">');
$image.css("max-width", "500px").css("max-height", "500px");
try {
$dialog
.hide()
.html($image)
.dialog({
title: options.title,
resizable: true,
draggable: true,
modal: true,
dialogClass: options.grayed ? "dialog-grayed" : "",
overlay: {
opacity: 0.5,
background: "black"
},
minHeight: 1,
width: $image.width,
close: function() {
$dialog.empty().remove();
}
})
.show();
} catch (err) {
// console.log(err);
}
}
// Advanced Form control.
function load_modal(settings) {
var AJAX_RUNNING = 0;
var data = new FormData();
if (settings.extradata) {
settings.extradata.forEach(function(item) {
if (item.value != undefined) data.append(item.name, item.value);
});
}
data.append("page", settings.onshow.page);
data.append("method", settings.onshow.method);
if (settings.onshow.extradata != undefined) {
data.append("extradata", JSON.stringify(settings.onshow.extradata));
}
if (settings.target == undefined) {
var uniq = uniqId();
var div = document.createElement("div");
div.id = "div-modal-" + uniq;
div.style.display = "none";
document.getElementById("main").append(div);
var id_modal_target = "#div-modal-" + uniq;
settings.target = $(id_modal_target);
}
var width = 630;
if (settings.onshow.width) {
width = settings.onshow.width;
}
if (settings.modal.overlay == undefined) {
settings.modal.overlay = {
opacity: 0.5,
background: "black"
};
}
settings.target.html("Loading modal...");
settings.target
.dialog({
title: "Loading",
close: false,
width: 200,
buttons: []
})
.show();
var required_buttons = [];
if (settings.modal.cancel != undefined) {
//The variable contains a function
// that is responsible for executing the method it receives from settings
// which confirms the closure of a modal
var cancelModal = function() {
settings.target.dialog("close");
if (AJAX_RUNNING) return;
AJAX_RUNNING = 1;
var formdata = new FormData();
formdata.append("page", settings.oncancel.page);
formdata.append("method", settings.oncancel.method);
$.ajax({
method: "post",
url: settings.url,
processData: false,
contentType: false,
data: formdata,
success: function(data) {
if (typeof settings.oncancel.callback == "function") {
settings.oncancel.callback(data);
settings.target.dialog("close");
}
AJAX_RUNNING = 0;
},
error: function(data) {
// console.log(data);
AJAX_RUNNING = 0;
}
});
};
required_buttons.push({
class:
"ui-widget ui-state-default ui-corner-all ui-button-text-only sub upd submit-cancel",
text: settings.modal.cancel,
click: function() {
if (settings.oncancel != undefined) {
if (typeof settings.oncancel.confirm == "function") {
//receive function
settings.oncancel.confirm(cancelModal);
} else if (settings.oncancel != undefined) {
cancelModal();
}
} else {
$(this).dialog("close");
}
}
});
}
if (settings.modal.ok != undefined) {
required_buttons.push({
class:
"ui-widget ui-state-default ui-corner-all ui-button-text-only sub ok submit-next",
text: settings.modal.ok,
click: function() {
if (AJAX_RUNNING) return;
if (settings.onsubmit != undefined) {
if (settings.onsubmit.preaction != undefined) {
settings.onsubmit.preaction();
}
AJAX_RUNNING = 1;
if (settings.onsubmit.dataType == undefined) {
settings.onsubmit.dataType = "html";
}
var formdata = new FormData();
if (settings.extradata) {
settings.extradata.forEach(function(item) {
if (item.value != undefined)
formdata.append(item.name, item.value);
});
}
formdata.append("page", settings.onsubmit.page);
formdata.append("method", settings.onsubmit.method);
var flagError = false;
$("#" + settings.form + " :input").each(function() {
if (this.checkValidity() === false) {
$(this).attr("title", this.validationMessage);
$(this).tooltip({
tooltipClass: "uitooltip",
position: {
my: "right bottom",
at: "right top",
using: function(position, feedback) {
$(this).css(position);
$("<div>")
.addClass("arrow")
.addClass(feedback.vertical)
.addClass(feedback.horizontal)
.appendTo(this);
}
}
});
$(this).tooltip("open");
var element = $(this);
setTimeout(
function(element) {
element.tooltip("destroy");
element.removeAttr("title");
},
3000,
element
);
flagError = true;
}
if (this.type == "file") {
if ($(this).prop("files")[0]) {
formdata.append(this.name, $(this).prop("files")[0]);
}
} else {
if ($(this).attr("type") == "checkbox") {
if (this.checked) {
formdata.append(this.name, "on");
}
} else {
formdata.append(this.name, $(this).val());
}
}
});
if (flagError === false) {
$.ajax({
method: "post",
url: settings.url,
processData: false,
contentType: false,
data: formdata,
dataType: settings.onsubmit.dataType,
success: function(data) {
if (settings.ajax_callback != undefined) {
if (settings.idMsgCallback != undefined) {
settings.ajax_callback(data, settings.idMsgCallback);
} else {
settings.ajax_callback(data);
}
}
AJAX_RUNNING = 0;
}
});
} else {
AJAX_RUNNING = 0;
}
} else {
// No onsumbit configured. Directly close.
$(this).dialog("close");
}
},
error: function(data) {
// console.log(data);
AJAX_RUNNING = 0;
}
});
}
$.ajax({
method: "post",
url: settings.url,
processData: false,
contentType: false,
data: data,
success: function(data) {
settings.target.html(data);
if (settings.onload != undefined) {
settings.onload(data);
}
settings.target.dialog({
resizable: true,
draggable: true,
modal: true,
title: settings.modal.title,
width: width,
overlay: settings.modal.overlay,
buttons: required_buttons,
closeOnEscape: false,
open: function() {
$(".ui-dialog-titlebar-close").hide();
},
close: function() {
if (id_modal_target != undefined) {
$(id_modal_target).remove();
}
}
});
},
error: function(data) {
// console.log(data);
}
});
}
//Function that shows a dialog box to confirm closures of generic manners. The modal id is random
function confirmDialog(settings) {
var randomStr = uniqId();
$("body").append(
'<div id="confirm_' + randomStr + '">' + settings.message + "</div>"
);
$("#confirm_" + randomStr);
$("#confirm_" + randomStr)
.dialog({
title: settings.title,
close: false,
width: 350,
modal: true,
buttons: [
{
text: "Cancel",
class:
"ui-widget ui-state-default ui-corner-all ui-button-text-only sub upd submit-cancel",
click: function() {
$(this).dialog("close");
if (typeof settings.onDeny == "function") settings.onDeny();
}
},
{
text: "Ok",
class:
"ui-widget ui-state-default ui-corner-all ui-button-text-only sub ok submit-next",
click: function() {
$(this).dialog("close");
if (typeof settings.onAccept == "function") settings.onAccept();
}
}
]
})
.show();
}
function uniqId() { function uniqId() {
var randomStr = var randomStr =
Math.random() Math.random()
@ -2173,58 +1838,6 @@ function uniqId() {
return randomStr; return randomStr;
} }
/**
* Function to show modal with message Validation.
*
* @param {json} data Json example:
* $return = [
* 'error' => 0 or 1,
* 'title' => [
* Failed,
* Success,
* ],
* 'text' => [
* Failed,
* Success,
* ],
*];
* @param {string} idMsg ID div charge modal.
*
* @return {void}
*/
function generalShowMsg(data, idMsg) {
var title = data.title[data.error];
var text = data.text[data.error];
var failed = !data.error;
$("#" + idMsg).empty();
$("#" + idMsg).html(text);
$("#" + idMsg).dialog({
width: 450,
position: {
my: "center",
at: "center",
of: window,
collision: "fit"
},
title: title,
buttons: [
{
class:
"ui-widget ui-state-default ui-corner-all ui-button-text-only sub ok submit-next",
text: "OK",
click: function(e) {
if (!failed) {
$(".ui-dialog-content").dialog("close");
} else {
$(this).dialog("close");
}
}
}
]
});
}
/** /**
* Function for AJAX request. * Function for AJAX request.
* *

View File

@ -214,8 +214,8 @@ function show_massive_response_dialog(
$("#button-submit_event_response").show(); $("#button-submit_event_response").show();
}, },
close: function() { close: function() {
$("#checkbox-all_validate_box").prop("checked", false);
$(".chk_val").prop("checked", false); $(".chk_val").prop("checked", false);
$("#event_response_command_window").dialog("close");
}, },
width: response["modal_width"], width: response["modal_width"],
height: response["modal_height"] height: response["modal_height"]

View File

@ -0,0 +1,399 @@
/* global $ */
/* exported load_modal */
/*JS to Show user modals :
- Confirm dialogs.
- Display dialogs.
- Load modal windows.
- Logo Previews.
- General show messages.
*/
var ENTERPRISE_DIR = "enterprise";
/**
* Display a dialog with an image
*
* @param {string} icon_name The name of the icon you will display
* @param {string} icon_path The path to the icon
* @param {Object} incoming_options All options
* grayed: {bool} True to display the background black
* title {string} 'Logo preview' by default
*/
function logo_preview(icon_name, icon_path, incoming_options) {
// Get the options
options = {
grayed: false,
title: "Logo preview"
};
$.extend(options, incoming_options);
if (icon_name == "") return;
$dialog = $("<div></div>");
$image = $('<img src="' + icon_path + '">');
$image.css("max-width", "500px").css("max-height", "500px");
try {
$dialog
.hide()
.html($image)
.dialog({
title: options.title,
resizable: true,
draggable: true,
modal: true,
dialogClass: options.grayed ? "dialog-grayed" : "",
overlay: {
opacity: 0.5,
background: "black"
},
minHeight: 1,
width: $image.width,
close: function() {
$dialog.empty().remove();
}
})
.show();
} catch (err) {
// console.log(err);
}
}
// Advanced Form control.
function load_modal(settings) {
var AJAX_RUNNING = 0;
var data = new FormData();
if (settings.extradata) {
settings.extradata.forEach(function(item) {
if (item.value != undefined) data.append(item.name, item.value);
});
}
data.append("page", settings.onshow.page);
data.append("method", settings.onshow.method);
if (settings.onshow.extradata != undefined) {
data.append("extradata", JSON.stringify(settings.onshow.extradata));
}
if (settings.target == undefined) {
var uniq = uniqId();
var div = document.createElement("div");
div.id = "div-modal-" + uniq;
div.style.display = "none";
document.getElementById("main").append(div);
var id_modal_target = "#div-modal-" + uniq;
settings.target = $(id_modal_target);
}
var width = 630;
if (settings.onshow.width) {
width = settings.onshow.width;
}
if (settings.modal.overlay == undefined) {
settings.modal.overlay = {
opacity: 0.5,
background: "black"
};
}
settings.target.html("Loading modal...");
settings.target
.dialog({
title: "Loading",
close: false,
width: 200,
buttons: []
})
.show();
var required_buttons = [];
if (settings.modal.cancel != undefined) {
//The variable contains a function
// that is responsible for executing the method it receives from settings
// which confirms the closure of a modal
var cancelModal = function() {
settings.target.dialog("close");
if (AJAX_RUNNING) return;
AJAX_RUNNING = 1;
var formdata = new FormData();
formdata.append("page", settings.oncancel.page);
formdata.append("method", settings.oncancel.method);
$.ajax({
method: "post",
url: settings.url,
processData: false,
contentType: false,
data: formdata,
success: function(data) {
if (typeof settings.oncancel.callback == "function") {
settings.oncancel.callback(data);
settings.target.dialog("close");
}
AJAX_RUNNING = 0;
},
error: function(data) {
// console.log(data);
AJAX_RUNNING = 0;
}
});
};
required_buttons.push({
class:
"ui-widget ui-state-default ui-corner-all ui-button-text-only sub upd submit-cancel",
text: settings.modal.cancel,
click: function() {
if (settings.oncancel != undefined) {
if (typeof settings.oncancel.confirm == "function") {
//receive function
settings.oncancel.confirm(cancelModal);
} else if (settings.oncancel != undefined) {
cancelModal();
}
} else {
$(this).dialog("close");
}
}
});
}
if (settings.modal.ok != undefined) {
required_buttons.push({
class:
"ui-widget ui-state-default ui-corner-all ui-button-text-only sub ok submit-next",
text: settings.modal.ok,
click: function() {
if (AJAX_RUNNING) return;
if (settings.onsubmit != undefined) {
if (settings.onsubmit.preaction != undefined) {
settings.onsubmit.preaction();
}
AJAX_RUNNING = 1;
if (settings.onsubmit.dataType == undefined) {
settings.onsubmit.dataType = "html";
}
var formdata = new FormData();
if (settings.extradata) {
settings.extradata.forEach(function(item) {
if (item.value != undefined)
formdata.append(item.name, item.value);
});
}
formdata.append("page", settings.onsubmit.page);
formdata.append("method", settings.onsubmit.method);
var flagError = false;
$("#" + settings.form + " :input").each(function() {
if (this.checkValidity() === false) {
$(this).attr("title", this.validationMessage);
$(this).tooltip({
tooltipClass: "uitooltip",
position: {
my: "right bottom",
at: "right top",
using: function(position, feedback) {
$(this).css(position);
$("<div>")
.addClass("arrow")
.addClass(feedback.vertical)
.addClass(feedback.horizontal)
.appendTo(this);
}
}
});
$(this).tooltip("open");
var element = $(this);
setTimeout(
function(element) {
element.tooltip("destroy");
element.removeAttr("title");
},
3000,
element
);
flagError = true;
}
if (this.type == "file") {
if ($(this).prop("files")[0]) {
formdata.append(this.name, $(this).prop("files")[0]);
}
} else {
if ($(this).attr("type") == "checkbox") {
if (this.checked) {
formdata.append(this.name, "on");
}
} else {
formdata.append(this.name, $(this).val());
}
}
});
if (flagError === false) {
$.ajax({
method: "post",
url: settings.url,
processData: false,
contentType: false,
data: formdata,
dataType: settings.onsubmit.dataType,
success: function(data) {
if (settings.ajax_callback != undefined) {
if (settings.idMsgCallback != undefined) {
settings.ajax_callback(data, settings.idMsgCallback);
} else {
settings.ajax_callback(data);
}
}
AJAX_RUNNING = 0;
}
});
} else {
AJAX_RUNNING = 0;
}
} else {
// No onsumbit configured. Directly close.
$(this).dialog("close");
}
},
error: function(data) {
// console.log(data);
AJAX_RUNNING = 0;
}
});
}
$.ajax({
method: "post",
url: settings.url,
processData: false,
contentType: false,
data: data,
success: function(data) {
settings.target.html(data);
if (settings.onload != undefined) {
settings.onload(data);
}
settings.target.dialog({
resizable: true,
draggable: true,
modal: true,
title: settings.modal.title,
width: width,
overlay: settings.modal.overlay,
buttons: required_buttons,
closeOnEscape: false,
open: function() {
$(".ui-dialog-titlebar-close").hide();
},
close: function() {
if (id_modal_target != undefined) {
$(id_modal_target).remove();
}
}
});
},
error: function(data) {
// console.log(data);
}
});
}
//Function that shows a dialog box to confirm closures of generic manners. The modal id is random
function confirmDialog(settings) {
var randomStr = uniqId();
$("body").append(
'<div id="confirm_' + randomStr + '">' + settings.message + "</div>"
);
$("#confirm_" + randomStr);
$("#confirm_" + randomStr)
.dialog({
title: settings.title,
close: false,
width: 350,
modal: true,
buttons: [
{
text: "Cancel",
class:
"ui-widget ui-state-default ui-corner-all ui-button-text-only sub upd submit-cancel",
click: function() {
$(this).dialog("close");
if (typeof settings.onDeny == "function") settings.onDeny();
}
},
{
text: "Ok",
class:
"ui-widget ui-state-default ui-corner-all ui-button-text-only sub ok submit-next",
click: function() {
$(this).dialog("close");
if (typeof settings.onAccept == "function") settings.onAccept();
}
}
]
})
.show();
}
/**
* Function to show modal with message Validation.
*
* @param {json} data Json example:
* $return = [
* 'error' => 0 or 1,
* 'title' => [
* Failed,
* Success,
* ],
* 'text' => [
* Failed,
* Success,
* ],
*];
* @param {string} idMsg ID div charge modal.
*
* @return {void}
*/
function generalShowMsg(data, idMsg) {
var title = data.title[data.error];
var text = data.text[data.error];
var failed = !data.error;
$("#" + idMsg).empty();
$("#" + idMsg).html(text);
$("#" + idMsg).dialog({
width: 450,
position: {
my: "center",
at: "center",
of: window,
collision: "fit"
},
title: title,
buttons: [
{
class:
"ui-widget ui-state-default ui-corner-all ui-button-text-only sub ok submit-next",
text: "OK",
click: function(e) {
if (!failed) {
$(".ui-dialog-content").dialog("close");
} else {
$(this).dialog("close");
}
}
}
]
});
}

View File

@ -4,7 +4,7 @@
var correct_install_progress = true; var correct_install_progress = true;
function form_upload(homeurl) { function form_upload(homeurl, current_package) {
var home_url = typeof homeurl !== "undefined" ? homeurl + "/" : ""; var home_url = typeof homeurl !== "undefined" ? homeurl + "/" : "";
//Thanks to: http://tutorialzine.com/2013/05/mini-ajax-file-upload-form/ //Thanks to: http://tutorialzine.com/2013/05/mini-ajax-file-upload-form/
@ -164,7 +164,7 @@ function form_upload(homeurl) {
.change(); .change();
// Begin the installation // Begin the installation
install_package(res.package, homeurl); install_package(res.package, homeurl, current_package);
}); });
} else { } else {
// Something has gone wrong! // Something has gone wrong!
@ -214,7 +214,7 @@ function formatFileSize(bytes) {
return (bytes / 1000).toFixed(2) + " KB"; return (bytes / 1000).toFixed(2) + " KB";
} }
function install_package(package, homeurl) { function install_package(package, homeurl, current_package) {
var home_url = typeof homeurl !== "undefined" ? homeurl + "/" : ""; var home_url = typeof homeurl !== "undefined" ? homeurl + "/" : "";
$( $(
@ -1235,6 +1235,50 @@ function install_package(package, homeurl) {
$("#pkg_apply_dialog").html(dialog_text); $("#pkg_apply_dialog").html(dialog_text);
$("#pkg_apply_dialog").dialog("open"); $("#pkg_apply_dialog").dialog("open");
const number_update = package.match(/package_(\d+).oum/);
if (number_update === null || number_update[1] != current_package - 0 + 1) {
$(
"<div id='warning_pkg' class='dialog ui-dialog-content' title='" +
package_available +
"'></div>"
).dialog({
resizable: true,
draggable: true,
modal: true,
overlay: {
opacity: 0.5,
background: "black"
},
width: 600,
height: 250,
buttons: [
{
text: ok_button,
click: function() {
$(this).dialog("close");
}
}
]
});
var dialog_warning = "<div class='update_popup'>";
dialog_warning =
dialog_warning +
"<div class='update_text'><h3>" +
text1_warning +
"</h3>";
dialog_warning = dialog_warning + "<p>" + text2_warning + "</p></div>";
dialog_warning =
dialog_warning +
"<div class='update_icon'><img src='" +
home_url +
"images/icono_warning_mr.png'></div>";
dialog_warning = dialog_warning + "</div>";
$("#warning_pkg").html(dialog_warning);
}
} }
function check_install_package(package, homeurl) { function check_install_package(package, homeurl) {

View File

@ -70,7 +70,7 @@ class User
$this->sessions[$data['phpsessionid']] = 1; $this->sessions[$data['phpsessionid']] = 1;
$info = \db_get_row_filter( $info = \db_get_row_filter(
'tsessions_php', 'tsessions_php',
['id_session' => $data['phpsessionid']] ['id_session' => io_safe_input($data['phpsessionid'])]
); );
if ($info !== false) { if ($info !== false) {

View File

@ -26,7 +26,7 @@
} }
.agent_options_column_left { .agent_options_column_left {
padding-right: 50px; padding-right: 60px;
} }
.agent_qr { .agent_qr {
@ -61,7 +61,7 @@ a#qr_code_agent_view {
.first_row .agent_options_column_right select, .first_row .agent_options_column_right select,
.first_row .agent_options_column_right input, .first_row .agent_options_column_right input,
.first_row .agent_options_column_left select#grupo { .first_row .agent_options_column_left select#grupo {
width: 95%; width: 93%;
box-sizing: border-box; box-sizing: border-box;
} }

View File

@ -30,7 +30,6 @@ div.mini-criticity.h100p {
form.flex-row div.filter_input, form.flex-row div.filter_input,
form.flex-row ul { form.flex-row ul {
width: 30%; width: 30%;
min-width: 300px;
display: flex; display: flex;
flex-direction: row; flex-direction: row;
align-items: baseline; align-items: baseline;
@ -47,12 +46,13 @@ div.filter_input_little {
flex-direction: row; flex-direction: row;
align-items: baseline; align-items: baseline;
flex-wrap: nowrap; flex-wrap: nowrap;
margin: 0.5em 0 0.5em 1em; margin: 0.5em 0 0.5em 0em;
} }
form.flex-row div.filter_input.large { form.flex-row div.filter_input.large {
flex: 1; flex: 1;
min-width: 470px; min-width: 700px;
max-width: 100%;
} }
div.filter_input > label, div.filter_input > label,
@ -120,6 +120,8 @@ table.dataTable tbody td {
.filter_input { .filter_input {
align-items: center; align-items: center;
min-width: 400px;
max-width: 450px;
} }
.filter_input_little > select, .filter_input_little > select,

View File

@ -4985,11 +4985,10 @@ input:checked + .p-slider:before {
.action_buttons input[type="image"], .action_buttons input[type="image"],
.action_button_img { .action_button_img {
border-radius: 4px; border-radius: 4px;
border: 1px solid #dcdcdc; border: 1px solid #dcdcdc !important;
padding: 1px; padding: 1px !important;
box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.1); box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.1);
max-width: 21px; max-width: 21px;
background-color: transparent; /*BORRAR*/
} }
/* This class is for only one icon to be a button type. */ /* This class is for only one icon to be a button type. */

View File

@ -1234,9 +1234,13 @@ if ($searchPage) {
if (isset($_GET['sec2'])) { if (isset($_GET['sec2'])) {
$file = $_GET['sec2'].'.php'; $file = $_GET['sec2'].'.php';
// Make file path absolute to prevent accessing remote files.
$file = __DIR__.'/'.$file;
// Translate some secs. // Translate some secs.
$main_sec = get_sec($_GET['sec']); $main_sec = get_sec($_GET['sec']);
$_GET['sec'] = ($main_sec == false) ? $_GET['sec'] : $main_sec; $_GET['sec'] = ($main_sec == false) ? $_GET['sec'] : $main_sec;
// Third condition is aimed to prevent from traversal attack.
if (!file_exists($file) if (!file_exists($file)
|| ($_GET['sec2'] != 'general/logon_ok' && enterprise_hook( || ($_GET['sec2'] != 'general/logon_ok' && enterprise_hook(
'enterprise_acl', 'enterprise_acl',
@ -1247,7 +1251,8 @@ if ($searchPage) {
true, true,
isset($_GET['sec3']) ? $_GET['sec3'] : '', isset($_GET['sec3']) ? $_GET['sec3'] : '',
] ]
) == false) ) == false
|| strpos(realpath($file), __DIR__) === false)
) { ) {
unset($_GET['sec2']); unset($_GET['sec2']);
include 'general/noaccess.php'; include 'general/noaccess.php';

View File

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

View File

@ -775,6 +775,7 @@ class Ui
echo " <script src='include/javascript/jquery.js'></script>\n"; echo " <script src='include/javascript/jquery.js'></script>\n";
echo " <script src='include/javascript/jquery.mobile-1.3.1.js'></script>\n"; echo " <script src='include/javascript/jquery.mobile-1.3.1.js'></script>\n";
echo " <script src='../include/javascript/pandora.js'></script>\n"; echo " <script src='../include/javascript/pandora.js'></script>\n";
echo " <script src='../include/javascript/pandora_ui.js'></script>\n";
echo " </head>\n"; echo " </head>\n";
echo " <body>\n"; echo " <body>\n";

View File

@ -81,8 +81,8 @@ if ($edit_networkmap) {
$id_group = $values['id_group']; $id_group = $values['id_group'];
// ACL for the network map. // ACL for the network map.
$networkmap_write = check_acl($config['id_user'], $id_group, 'MW'); $networkmap_write = check_acl($config['id_user'], $id_group_map, 'MW');
$networkmap_manage = check_acl($config['id_user'], $id_group, 'MM'); $networkmap_manage = check_acl($config['id_user'], $id_group_map, 'MM');
if (!$networkmap_write && !$networkmap_manage) { if (!$networkmap_write && !$networkmap_manage) {
db_pandora_audit( db_pandora_audit(
@ -95,6 +95,9 @@ if ($edit_networkmap) {
$name = io_safe_output($values['name']); $name = io_safe_output($values['name']);
// Id group of the map itself, not data source.
$id_group_map = $values['id_group_map'];
$description = $values['description']; $description = $values['description'];
$filter = json_decode($values['filter'], true); $filter = json_decode($values['filter'], true);
@ -267,8 +270,8 @@ if ($not_found) {
$config['id_user'], $config['id_user'],
'AR', 'AR',
true, true,
'id_group', 'id_group_map',
$id_group, $id_group_map,
'', '',
'', '',
'', '',
@ -329,6 +332,28 @@ if ($not_found) {
$table->data['source_data_ip_mask'][0] = __('Source from CIDR IP mask'); $table->data['source_data_ip_mask'][0] = __('Source from CIDR IP mask');
$table->data['source_data_ip_mask'][1] = html_print_input_text('ip_mask', $ip_mask, '', 20, 255, true, $disabled_source); $table->data['source_data_ip_mask'][1] = html_print_input_text('ip_mask', $ip_mask, '', 20, 255, true, $disabled_source);
$table->data['source_data_group'][0] = __('Source group');
$table->data['source_data_group'][1] = html_print_select_groups(
$config['id_user'],
'AR',
true,
'id_group',
$id_group,
'',
'',
'',
true
);
$table->data['source_data_group'][1] .= html_print_image(
'images/error.png',
true,
[
'id' => 'group_change_warning',
'title' => __('Source id group changed. All elements in networkmap will be lost.'),
'style' => 'display : none',
]
);
$table->data['source_data_dont_show_subgroups'][0] = __('Don\'t show subgroups:'); $table->data['source_data_dont_show_subgroups'][0] = __('Don\'t show subgroups:');
$table->data['source_data_dont_show_subgroups'][1] = html_print_checkbox( $table->data['source_data_dont_show_subgroups'][1] = html_print_checkbox(
'dont_show_subgroups', 'dont_show_subgroups',
@ -379,7 +404,7 @@ if ($not_found) {
$table->data['kval'][0] = __('Default ideal node separation'); $table->data['kval'][0] = __('Default ideal node separation');
$table->data['kval'][1] = html_print_input_text('kval', $kval, '', 5, 10, true, $disabled_source, false, $itemClass).ui_print_help_tip(__('Only fdp. Default ideal node separation in the layout. By default 0.3'), true); $table->data['kval'][1] = html_print_input_text('kval', $kval, '', 5, 10, true, $disabled_source, false, $itemClass).ui_print_help_tip(__('Only fdp. Default ideal node separation in the layout. By default 0.3'), true);
echo '<form method="post" action="index.php?sec=network&amp;sec2=operation/agentes/pandora_networkmap">'; echo '<form id="networkmap_options_form" method="post" action="index.php?sec=network&amp;sec2=operation/agentes/pandora_networkmap">';
html_print_table($table); html_print_table($table);
@ -420,8 +445,11 @@ $(document).ready(function() {
.css('display', 'none'); .css('display', 'none');
$("#form_editor-source_data_dont_show_subgroups") $("#form_editor-source_data_dont_show_subgroups")
.css('display', 'none'); .css('display', 'none');
$("#form_editor-source_data_group")
.css('display', 'none');
$("#form_editor-source_data_recon_task") $("#form_editor-source_data_recon_task")
.css('display', ''); .css('display', '');
} }
else if (source == 'ip_mask') { else if (source == 'ip_mask') {
$("#form_editor-source_data_ip_mask") $("#form_editor-source_data_ip_mask")
@ -430,6 +458,8 @@ $(document).ready(function() {
.css('display', 'none'); .css('display', 'none');
$("#form_editor-source_data_dont_show_subgroups") $("#form_editor-source_data_dont_show_subgroups")
.css('display', 'none'); .css('display', 'none');
$("#form_editor-source_data_group")
.css('display', 'none');
} }
else if (source == 'group') { else if (source == 'group') {
$("#form_editor-source_data_ip_mask") $("#form_editor-source_data_ip_mask")
@ -438,6 +468,8 @@ $(document).ready(function() {
.css('display', 'none'); .css('display', 'none');
$("#form_editor-source_data_dont_show_subgroups") $("#form_editor-source_data_dont_show_subgroups")
.css('display', ''); .css('display', '');
$("#form_editor-source_data_group")
.css('display', '');
} }
}); });
@ -508,5 +540,53 @@ $(document).ready(function() {
$("input[name='source']").trigger("change"); $("input[name='source']").trigger("change");
$("#method").trigger("change"); $("#method").trigger("change");
// Control if id_group has changed.
var id_group_old = $("#id_group").val();
var id_group_changed = false;
$("#id_group").on('change',{id_group_old: id_group_old}, function () {
var id_group_new = $("#id_group").val();
if((id_group_old != id_group_new) && (update_networkmap == 1 )) {
id_group_changed = true;
$("#group_change_warning").show();
} else {
id_group_changed = false;
$("#group_change_warning").hide();
}
});
var update_networkmap = 0;
// Show advice if id_group has changed.
update_networkmap = $("input[name='update_networkmap']").val();
$( "#submit-crt" ).click(function( event ) {
if(update_networkmap == 1 && id_group_changed === true) {
confirmDialog({
title: '<?php echo __('Are you sure?'); ?>',
message: '<?php echo __('Source id group changed. All elements in Networkmap will be lost'); ?>',
ok: '<?php echo __('OK'); ?>',
cancel: '<?php echo __('Cancel'); ?>',
onDeny: function() {
// Continue execution.
return false;
},
onAccept: function () {
// Submit form
$("#networkmap_options_form").submit();
}
})
event.preventDefault();
}
}); });
});
</script> </script>

View File

@ -12,10 +12,10 @@
// Load global variables // Load global variables
global $config; global $config;
// Check user credentials // Check user credentials.
check_login(); check_login();
// General ACL for the network maps // General ACL for the network maps.
$networkmaps_read = check_acl($config['id_user'], 0, 'MR'); $networkmaps_read = check_acl($config['id_user'], 0, 'MR');
$networkmaps_write = check_acl($config['id_user'], 0, 'MW'); $networkmaps_write = check_acl($config['id_user'], 0, 'MW');
$networkmaps_manage = check_acl($config['id_user'], 0, 'MM'); $networkmaps_manage = check_acl($config['id_user'], 0, 'MM');
@ -53,11 +53,12 @@ if (enterprise_installed()) {
if ($save_empty_networkmap) { if ($save_empty_networkmap) {
$id_group = (int) get_parameter('id_group', 0); $id_group = (int) get_parameter('id_group', 0);
$id_group_map = (int) get_paramater('id_group_map', 0);
// ACL for the network map // ACL for the network map.
// $networkmap_read = check_acl ($config['id_user'], $id_group, "MR"); // $networkmap_read = check_acl ($config['id_user'], $id_group, "MR");
$networkmap_write = check_acl($config['id_user'], $id_group, 'MW'); $networkmap_write = check_acl($config['id_user'], $id_group_map, 'MW');
$networkmap_manage = check_acl($config['id_user'], $id_group, 'MM'); $networkmap_manage = check_acl($config['id_user'], $id_group_map, 'MM');
if (!$networkmap_write && !$networkmap_manage) { if (!$networkmap_write && !$networkmap_manage) {
db_pandora_audit( db_pandora_audit(
@ -93,6 +94,7 @@ if (enterprise_installed()) {
$values['description'] = $description; $values['description'] = $description;
$values['source'] = 0; $values['source'] = 0;
$values['source_data'] = $id_group; $values['source_data'] = $id_group;
$values['id_group_map'] = $id_group_map;
if (!$networkmap_write && !$networkmap_manage) { if (!$networkmap_write && !$networkmap_manage) {
@ -139,10 +141,12 @@ if (enterprise_installed()) {
} }
} else if ($update_empty_networkmap) { } else if ($update_empty_networkmap) {
$id_group = (int) get_parameter('id_group', 0); $id_group = (int) get_parameter('id_group', 0);
$id_group_map = (int) get_parameter('id_group_map', 0);
// ACL for the new network map // ACL for the new network map
$networkmap_write_new = check_acl($config['id_user'], $id_group, 'MW'); $networkmap_write_new = check_acl($config['id_user'], $id_group_map, 'MW');
$networkmap_manage_new = check_acl($config['id_user'], $id_group, 'MM'); $networkmap_manage_new = check_acl($config['id_user'], $id_group_map, 'MM');
if (!$networkmap_write && !$networkmap_manage) { if (!$networkmap_write && !$networkmap_manage) {
db_pandora_audit( db_pandora_audit(
@ -221,11 +225,13 @@ if ($new_networkmap || $save_networkmap) {
if ($save_networkmap) { if ($save_networkmap) {
$id_group = (int) get_parameter('id_group', 0); $id_group = (int) get_parameter('id_group', 0);
$id_group_map = (int) get_parameter('id_group_map', 0);
// ACL for the network map // ACL for the network map
// $networkmap_read = check_acl ($config['id_user'], $id_group, "MR"); // $networkmap_read = check_acl ($config['id_user'], $id_group, "MR");
$networkmap_write = check_acl($config['id_user'], $id_group, 'MW'); $networkmap_write = check_acl($config['id_user'], $id_group_map, 'MW');
$networkmap_manage = check_acl($config['id_user'], $id_group, 'MM'); $networkmap_manage = check_acl($config['id_user'], $id_group_map, 'MM');
if (!$networkmap_write && !$networkmap_manage) { if (!$networkmap_write && !$networkmap_manage) {
db_pandora_audit( db_pandora_audit(
@ -282,6 +288,7 @@ if ($new_networkmap || $save_networkmap) {
$values['height'] = $height; $values['height'] = $height;
$values['id_user'] = $config['id_user']; $values['id_user'] = $config['id_user'];
$values['description'] = $description; $values['description'] = $description;
$values['id_group_map'] = $id_group_map;
switch ($method) { switch ($method) {
case 'twopi': case 'twopi':
@ -401,8 +408,10 @@ else if ($update_networkmap || $copy_networkmap || $delete) {
return; return;
} }
$id_group_old = db_get_value('id_group', 'tmap', 'id', $id); // ACL for the network map.
if ($id_group_old === false) { $id_group_map_old = db_get_value('id_group_map', 'tmap', 'id', $id);
if ($id_group_map_old === false) {
db_pandora_audit( db_pandora_audit(
'ACL Violation', 'ACL Violation',
'Trying to accessnode graph builder' 'Trying to accessnode graph builder'
@ -411,9 +420,8 @@ else if ($update_networkmap || $copy_networkmap || $delete) {
return; return;
} }
// ACL for the network map $networkmap_write = check_acl($config['id_user'], $id_group_map_old, 'MW');
$networkmap_write = check_acl($config['id_user'], $id_group_old, 'MW'); $networkmap_manage = check_acl($config['id_user'], $id_group_map_old, 'MM');
$networkmap_manage = check_acl($config['id_user'], $id_group_old, 'MM');
if (!$networkmap_write && !$networkmap_manage) { if (!$networkmap_write && !$networkmap_manage) {
db_pandora_audit( db_pandora_audit(
@ -426,10 +434,14 @@ else if ($update_networkmap || $copy_networkmap || $delete) {
if ($update_networkmap) { if ($update_networkmap) {
$id_group = (int) get_parameter('id_group', 0); $id_group = (int) get_parameter('id_group', 0);
// Get id of old group source to check changes.
$id_group_old = db_get_value('id_group', 'tmap', 'id', $id);
// ACL for the new network map // ACL for the new network map
$networkmap_write_new = check_acl($config['id_user'], $id_group, 'MW'); $id_group_map = (int) get_parameter('id_group_map', 0);
$networkmap_manage_new = check_acl($config['id_user'], $id_group, 'MM'); $networkmap_write_new = check_acl($config['id_user'], $id_group_map, 'MW');
$networkmap_manage_new = check_acl($config['id_user'], $id_group_map, 'MM');
if (!$networkmap_write && !$networkmap_manage) { if (!$networkmap_write && !$networkmap_manage) {
db_pandora_audit( db_pandora_audit(
@ -456,6 +468,7 @@ else if ($update_networkmap || $copy_networkmap || $delete) {
$values = []; $values = [];
$values['name'] = $name; $values['name'] = $name;
$values['id_group'] = $id_group; $values['id_group'] = $id_group;
$values['id_group_map'] = $id_group_map;
$description = get_parameter('description', ''); $description = get_parameter('description', '');
$values['description'] = $description; $values['description'] = $description;
@ -493,6 +506,8 @@ else if ($update_networkmap || $copy_networkmap || $delete) {
// If change the group, the map must be regenerated // If change the group, the map must be regenerated
if ($id_group != $id_group_old) { if ($id_group != $id_group_old) {
networkmap_delete_nodes($id); networkmap_delete_nodes($id);
// Delete relations.
networkmap_delete_relations($id);
} }
$networkmap_write = $networkmap_write_new; $networkmap_write = $networkmap_write_new;
@ -701,9 +716,9 @@ switch ($tab) {
$network_maps = db_get_all_rows_filter( $network_maps = db_get_all_rows_filter(
'tmap', 'tmap',
[ [
'id_group' => $id_groups, 'id_group_map' => $id_groups,
'limit' => $limit, 'limit' => $limit,
'offset' => $offset, 'offset' => $offset,
] ]
); );
@ -712,9 +727,9 @@ switch ($tab) {
foreach ($network_maps as $network_map) { foreach ($network_maps as $network_map) {
// ACL for the network map // ACL for the network map
$networkmap_read = check_acl($config['id_user'], $network_map['id_group'], 'MR'); $networkmap_read = check_acl($config['id_user'], $network_map['id_group_map'], 'MR');
$networkmap_write = check_acl($config['id_user'], $network_map['id_group'], 'MW'); $networkmap_write = check_acl($config['id_user'], $network_map['id_group_map'], 'MW');
$networkmap_manage = check_acl($config['id_user'], $network_map['id_group'], 'MM'); $networkmap_manage = check_acl($config['id_user'], $network_map['id_group_map'], 'MM');
if (!$networkmap_read && !$networkmap_write && !$networkmap_manage) { if (!$networkmap_read && !$networkmap_write && !$networkmap_manage) {
db_pandora_audit( db_pandora_audit(
@ -722,7 +737,7 @@ switch ($tab) {
'Trying to access networkmap enterprise' 'Trying to access networkmap enterprise'
); );
include 'general/noaccess.php'; include 'general/noaccess.php';
return; continue;
} }
$data = []; $data = [];
@ -768,7 +783,7 @@ switch ($tab) {
} }
} }
$data['groups'] = ui_print_group_icon($network_map['id_group'], true); $data['groups'] = ui_print_group_icon($network_map['id_group_map'], true);
if ($networkmap_write || $networkmap_manage) { if ($networkmap_write || $networkmap_manage) {
$table->cellclass[] = [ $table->cellclass[] = [

View File

@ -576,8 +576,8 @@ if (is_ajax()) {
$filter = json_encode($array_filter); $filter = json_encode($array_filter);
// ACL for the network map. // ACL for the network map.
$networkmap_write = check_acl($config['id_user'], $networkmap['id_group'], 'MW'); $networkmap_write = check_acl($config['id_user'], $networkmap['id_group_map'], 'MW');
$networkmap_manage = check_acl($config['id_user'], $networkmap['id_group'], 'MM'); $networkmap_manage = check_acl($config['id_user'], $networkmap['id_group_map'], 'MM');
if (!$networkmap_write && !$networkmap_manage) { if (!$networkmap_write && !$networkmap_manage) {
db_pandora_audit( db_pandora_audit(
@ -800,9 +800,9 @@ if ($networkmap === false) {
return; return;
} else { } else {
// ACL for the network map. // ACL for the network map.
$networkmap_read = check_acl($config['id_user'], $networkmap['id_group'], 'MR'); $networkmap_read = check_acl($config['id_user'], $networkmap['id_group_map'], 'MR');
$networkmap_write = check_acl($config['id_user'], $networkmap['id_group'], 'MW'); $networkmap_write = check_acl($config['id_user'], $networkmap['id_group_map'], 'MW');
$networkmap_manage = check_acl($config['id_user'], $networkmap['id_group'], 'MM'); $networkmap_manage = check_acl($config['id_user'], $networkmap['id_group_map'], 'MM');
if (!$networkmap_read && !$networkmap_write && !$networkmap_manage) { if (!$networkmap_read && !$networkmap_write && !$networkmap_manage) {
db_pandora_audit( db_pandora_audit(

View File

@ -65,6 +65,7 @@ echo '<link rel="stylesheet" href="../../include/styles/pandora.css" type="text/
<link rel="stylesheet" href="../../include/styles/pandora_minimal.css" type="text/css" /> <link rel="stylesheet" href="../../include/styles/pandora_minimal.css" type="text/css" />
<link rel="stylesheet" href="../../include/styles/js/jquery-ui.min.css" type="text/css" /> <link rel="stylesheet" href="../../include/styles/js/jquery-ui.min.css" type="text/css" />
<script type='text/javascript' src='../../include/javascript/pandora.js'></script> <script type='text/javascript' src='../../include/javascript/pandora.js'></script>
<script type='text/javascript' src='../../include/javascript/pandora_ui.js'></script>
<script type='text/javascript' src='../../include/javascript/jquery-3.3.1.min.js'></script> <script type='text/javascript' src='../../include/javascript/jquery-3.3.1.min.js'></script>
<script type='text/javascript' src='../../include/javascript/jquery.pandora.js'></script> <script type='text/javascript' src='../../include/javascript/jquery.pandora.js'></script>
<script type='text/javascript' src='../../include/javascript/jquery-ui.min.js'></script> <script type='text/javascript' src='../../include/javascript/jquery-ui.min.js'></script>

View File

@ -73,6 +73,7 @@ $label = db_get_value('nombre', 'tagente_modulo', 'id_agente_modulo', $id)
<link rel="stylesheet" href="../../include/styles/js/jquery-ui.min.css" type="text/css" /> <link rel="stylesheet" href="../../include/styles/js/jquery-ui.min.css" type="text/css" />
<link rel="stylesheet" href="../../include/styles/js/jquery-ui_custom.css" type="text/css" /> <link rel="stylesheet" href="../../include/styles/js/jquery-ui_custom.css" type="text/css" />
<script type='text/javascript' src='../../include/javascript/pandora.js'></script> <script type='text/javascript' src='../../include/javascript/pandora.js'></script>
<script type='text/javascript' src='../../include/javascript/pandora_ui.js'></script>
<script type='text/javascript' src='../../include/javascript/jquery-3.3.1.min.js'></script> <script type='text/javascript' src='../../include/javascript/jquery-3.3.1.min.js'></script>
<script type='text/javascript' src='../../include/javascript/jquery.pandora.js'></script> <script type='text/javascript' src='../../include/javascript/jquery.pandora.js'></script>
<script type='text/javascript' src='../../include/javascript/jquery-ui.min.js'></script> <script type='text/javascript' src='../../include/javascript/jquery-ui.min.js'></script>

View File

@ -135,6 +135,10 @@ $id_agent = get_parameter(
'filter[id_agent]', 'filter[id_agent]',
$filter['id_agent'] $filter['id_agent']
); );
$text_module = get_parameter(
'filter[text_module]',
$filter['text_module']
);
$id_agent_module = get_parameter( $id_agent_module = get_parameter(
'filter[id_agent_module]', 'filter[id_agent_module]',
$filter['id_agent_module'] $filter['id_agent_module']
@ -210,10 +214,38 @@ $id_source_event = get_parameter(
$filter['id_source_event'] $filter['id_source_event']
); );
$server_id = get_parameter(
'filter[server_id]',
$filter['id_server_meta']
);
if (is_metaconsole()) {
// Connect to node database.
$id_node = $server_id;
if ($id_node != 0) {
if (metaconsole_connect(null, $id_node) != NOERR) {
return false;
}
}
}
if (empty($text_agent) && !empty($id_agent)) { if (empty($text_agent) && !empty($id_agent)) {
$text_agent = agents_get_alias($id_agent); $text_agent = agents_get_alias($id_agent);
} }
if (empty($text_module) && !empty($id_agent_module)) {
$text_module = modules_get_agentmodule_name($id_agent_module);
$text_agent = agents_get_alias(modules_get_agentmodule_agent($id_agent_module));
}
if (is_metaconsole()) {
// Return to metaconsole database.
if ($id_node != 0) {
metaconsole_restore_db();
}
}
// Ajax responses. // Ajax responses.
if (is_ajax()) { if (is_ajax()) {
$get_events = get_parameter('get_events', 0); $get_events = get_parameter('get_events', 0);
@ -862,22 +894,6 @@ $in = '<div class="filter_input"><label>'.__('Event type').'</label>';
$in .= $data.'</div>'; $in .= $data.'</div>';
$inputs[] = $in; $inputs[] = $in;
// Criticity - severity.
$severity_select .= html_print_select(
get_priorities(),
'severity',
$severity,
'',
__('All'),
'-1',
true,
false,
false
);
$in = '<div class="filter_input"><label>'.__('Severity').'</label>';
$in .= $severity_select.'</div>';
$inputs[] = $in;
// Event status. // Event status.
$data = html_print_select( $data = html_print_select(
events_get_all_status(), events_get_all_status(),
@ -929,6 +945,28 @@ $in = '<div class="filter_input"><label>'.__('Free search').'</label>';
$in .= $data.'</div>'; $in .= $data.'</div>';
$inputs[] = $in; $inputs[] = $in;
if (empty($severity) && $severity !== '0') {
$severity = -1;
}
// Criticity - severity.
$data = html_print_select(
get_priorities(),
'severity',
$severity,
'',
__('All'),
-1,
true,
true,
true,
'',
false
);
$in = '<div class="filter_input"><label>'.__('Severity').'</label>';
$in .= $data.'</div>';
$inputs[] = $in;
$buttons = []; $buttons = [];
$buttons[] = [ $buttons[] = [
@ -1083,8 +1121,6 @@ if (is_metaconsole()) {
$adv_inputs[] = $in; $adv_inputs[] = $in;
} }
// Gap.
$adv_inputs[] = '<div class="filter_input"></div>';
// Date from. // Date from.
$data = html_print_input_text( $data = html_print_input_text(
@ -1634,6 +1670,10 @@ function process_datatables_callback(table, settings) {
} }
// Uncheck checkbox to select all.
if ($('#checkbox-all_validate_box').length) {
$('#checkbox-all_validate_box').uncheck();
}
} }
function process_datatables_item(item) { function process_datatables_item(item) {

View File

@ -87,8 +87,8 @@ if ($layout) {
$id_layout, $id_layout,
true, true,
true, true,
$width, $bwidth,
$height, $bheight,
'../../', '../../',
true, true,
true, true,
@ -196,7 +196,6 @@ $ignored_params['refr'] = '';
$('body').css('background-color','<?php echo $layout['background_color']; ?>'); $('body').css('background-color','<?php echo $layout['background_color']; ?>');
$('body').css('margin','0'); $('body').css('margin','0');
$('body').css('height','100%');
$('body').css('overflow','hidden'); $('body').css('overflow','hidden');
$(".module_graph .menu_graph").css('display','none'); $(".module_graph .menu_graph").css('display','none');

View File

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

View File

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

View File

@ -3,7 +3,7 @@
# #
%define name pandorafms_console %define name pandorafms_console
%define version 7.0NG.742 %define version 7.0NG.742
%define release 200110 %define release 200127
%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

@ -1020,6 +1020,7 @@ CREATE TABLE IF NOT EXISTS `tserver` (
`server_keepalive` int(11) NOT NULL default 0, `server_keepalive` int(11) NOT NULL default 0,
`stat_utimestamp` bigint(20) NOT NULL default '0', `stat_utimestamp` bigint(20) NOT NULL default '0',
`exec_proxy` tinyint(1) UNSIGNED NOT NULL default 0, `exec_proxy` tinyint(1) UNSIGNED NOT NULL default 0,
`port` int(5) unsigned NOT NULL default 0,
PRIMARY KEY (`id_server`), PRIMARY KEY (`id_server`),
KEY `name` (`name`) KEY `name` (`name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8; ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
@ -1098,7 +1099,7 @@ CREATE TABLE IF NOT EXISTS `tevent_filter` (
`id_name` varchar(600) NOT NULL, `id_name` varchar(600) NOT NULL,
`id_group` int(10) NOT NULL default 0, `id_group` int(10) NOT NULL default 0,
`event_type` text NOT NULL, `event_type` text NOT NULL,
`severity` int(10) NOT NULL default -1, `severity` text NOT NULL,
`status` int(10) NOT NULL default -1, `status` int(10) NOT NULL default -1,
`search` TEXT, `search` TEXT,
`text_agent` TEXT, `text_agent` TEXT,
@ -1485,14 +1486,15 @@ CREATE TABLE IF NOT EXISTS `treport_content_sla_combined` (
-- Table `treport_content_item` -- Table `treport_content_item`
-- ---------------------------------------------------------------------- -- ----------------------------------------------------------------------
CREATE TABLE IF NOT EXISTS `treport_content_item` ( CREATE TABLE IF NOT EXISTS `treport_content_item` (
`id` INTEGER UNSIGNED NOT NULL auto_increment, `id` INTEGER UNSIGNED NOT NULL auto_increment,
`id_report_content` INTEGER UNSIGNED NOT NULL, `id_report_content` INTEGER UNSIGNED NOT NULL,
`id_agent_module` int(10) unsigned NOT NULL, `id_agent_module` int(10) unsigned NOT NULL,
`id_agent_module_failover` int(10) unsigned NOT NULL DEFAULT 0,
`server_name` text, `server_name` text,
`operation` text, `operation` text,
PRIMARY KEY(`id`), PRIMARY KEY(`id`),
FOREIGN KEY (`id_report_content`) REFERENCES treport_content(`id_rc`) FOREIGN KEY (`id_report_content`) REFERENCES treport_content(`id_rc`)
ON UPDATE CASCADE ON DELETE CASCADE ON UPDATE CASCADE ON DELETE CASCADE
) ENGINE = InnoDB DEFAULT CHARSET=utf8; ) ENGINE = InnoDB DEFAULT CHARSET=utf8;
-- --------------------------------------------------------------------- -- ---------------------------------------------------------------------
@ -2188,6 +2190,7 @@ CREATE TABLE IF NOT EXISTS `tmap` (
`generation_method` INTEGER UNSIGNED NOT NULL default 0, `generation_method` INTEGER UNSIGNED NOT NULL default 0,
`generated` INTEGER UNSIGNED NOT NULL default 0, `generated` INTEGER UNSIGNED NOT NULL default 0,
`filter` TEXT, `filter` TEXT,
`id_group_map` INT(10) UNSIGNED NOT NULL default 0,
PRIMARY KEY(`id`) PRIMARY KEY(`id`)
) ENGINE = InnoDB DEFAULT CHARSET=utf8; ) ENGINE = InnoDB DEFAULT CHARSET=utf8;

View File

@ -140,7 +140,8 @@ INSERT INTO `tconfig` (`token`, `value`) VALUES
('cr_incident_title', ''), ('cr_incident_title', ''),
('cr_incident_content', ''), ('cr_incident_content', ''),
('sample_agent', '0'), ('sample_agent', '0'),
('gotty', '/usr/bin/gotty'); ('gotty', '/usr/bin/gotty'),
('custom_module_units', '{"bytes":"bytes","entries":"entries","files":"files","hits":"hits","sessions":"sessions","users":"users","ºC":"ºC","ºF":"ºF"}');
UNLOCK TABLES; UNLOCK TABLES;
-- --

View File

@ -1,5 +1,5 @@
package: pandorafms-server package: pandorafms-server
Version: 7.0NG.742-200110 Version: 7.0NG.742-200127
Architecture: all Architecture: all
Priority: optional Priority: optional
Section: admin Section: admin

View File

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

View File

@ -163,7 +163,12 @@ wmiserver 1
network_timeout 4 network_timeout 4
# Network timeout (in seconds) for timeout in remote execution commands (PANDORA FMS ENTERPRISE ONLY). # Network timeout (in seconds) for timeout in remote execution commands (PANDORA FMS ENTERPRISE ONLY).
rcmd_timeout 30
rcmd_timeout 10
# Pandora FMS remote execution commands timeout tool filepath (by default at /usr/bin)
rcmd_timeout_bin /usr/bin/timeout
# Remote execution modules, ssh_launcher extra option (PANDORA FMS ENTERPRISE ONLY). # Remote execution modules, ssh_launcher extra option (PANDORA FMS ENTERPRISE ONLY).
ssh_launcher /usr/share/pandora_server/util/ssh_launcher.sh ssh_launcher /usr/share/pandora_server/util/ssh_launcher.sh

View File

@ -148,6 +148,14 @@ wmiserver 0
network_timeout 5 network_timeout 5
# Network timeout (in seconds) for timeout in remote execution commands (PANDORA FMS ENTERPRISE ONLY).
rcmd_timeout 10
# Pandora FMS remote execution commands timeout tool filepath (by default at /usr/bin)
rcmd_timeout_bin C:\PandoraFMS\Pandora_Server\bin\pandora_exec.exe
# Server keepalive (in seconds) # Server keepalive (in seconds)
server_keepalive 45 server_keepalive 45

View File

@ -45,7 +45,7 @@ our @EXPORT = qw(
# version: Defines actual version of Pandora Server for this module only # version: Defines actual version of Pandora Server for this module only
my $pandora_version = "7.0NG.742"; my $pandora_version = "7.0NG.742";
my $pandora_build = "200110"; my $pandora_build = "200127";
our $VERSION = $pandora_version." ".$pandora_build; our $VERSION = $pandora_version." ".$pandora_build;
# Setup hash # Setup hash
@ -275,7 +275,8 @@ sub pandora_load_config {
$pa_config->{"alert_recovery"} = 0; # Introduced on 1.3.1 $pa_config->{"alert_recovery"} = 0; # Introduced on 1.3.1
$pa_config->{"snmp_checks"} = 1; # Introduced on 1.3.1 $pa_config->{"snmp_checks"} = 1; # Introduced on 1.3.1
$pa_config->{"snmp_timeout"} = 8; # Introduced on 1.3.1 $pa_config->{"snmp_timeout"} = 8; # Introduced on 1.3.1
$pa_config->{"rcmd_timeout"} = 30; # Introduced on 7.0.740 $pa_config->{"rcmd_timeout"} = 10; # Introduced on 7.0.740
$pa_config->{"rcmd_timeout_bin"} = '/usr/bin/timeout'; # Introduced on 7.0.743
$pa_config->{"snmp_trapd"} = '/usr/sbin/snmptrapd'; # 3.0 $pa_config->{"snmp_trapd"} = '/usr/sbin/snmptrapd'; # 3.0
$pa_config->{"tcp_checks"} = 1; # Introduced on 1.3.1 $pa_config->{"tcp_checks"} = 1; # Introduced on 1.3.1
$pa_config->{"tcp_timeout"} = 20; # Introduced on 1.3.1 $pa_config->{"tcp_timeout"} = 20; # Introduced on 1.3.1
@ -806,6 +807,9 @@ sub pandora_load_config {
elsif ($parametro =~ m/^rcmd_timeout\s+([0-9]*)/i) { elsif ($parametro =~ m/^rcmd_timeout\s+([0-9]*)/i) {
$pa_config->{"rcmd_timeout"} = clean_blank($1); $pa_config->{"rcmd_timeout"} = clean_blank($1);
} }
elsif ($parametro =~ m/^rcmd_timeout_bin\s(.*)/i) {
$pa_config->{"rcmd_timeout_bin"} = clean_blank($1);
}
elsif ($parametro =~ m/^tcp_checks\s+([0-9]*)/i) { elsif ($parametro =~ m/^tcp_checks\s+([0-9]*)/i) {
$pa_config->{"tcp_checks"} = clean_blank($1); $pa_config->{"tcp_checks"} = clean_blank($1);
} }

View File

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

View File

@ -1447,7 +1447,7 @@ sub cloud_scan($) {
} else { } else {
# Unrecognized task type. # Unrecognized task type.
call('message', 'Unrecognized task type', 1); $self->call('message', 'Unrecognized task type', 1);
$self->call('update_progress', -1); $self->call('update_progress', -1);
return; return;
} }
@ -1469,7 +1469,7 @@ sub cloud_scan($) {
if (!$cloudObj) { if (!$cloudObj) {
# Failed to initialize, check Cloud credentials or anything. # Failed to initialize, check Cloud credentials or anything.
call('message', 'Unable to initialize PandoraFMS::Recon::Cloud::'.$type, 3); $self->call('message', 'Unable to initialize PandoraFMS::Recon::Cloud::'.$type, 3);
} else { } else {
# Let Cloud object manage scan. # Let Cloud object manage scan.
@ -1581,7 +1581,7 @@ sub app_scan($) {
$type = 'SAP'; $type = 'SAP';
} else { } else {
# Unrecognized task type. # Unrecognized task type.
call('message', 'Unrecognized task type', 1); $self->call('message', 'Unrecognized task type', 1);
$self->call('update_progress', -1); $self->call('update_progress', -1);
return; return;
} }
@ -1607,7 +1607,7 @@ sub app_scan($) {
$self->{'c_network_percent'} = 0; $self->{'c_network_percent'} = 0;
# Send message # Send message
call('message', 'Checking target ' . $target, 10); $self->call('message', 'Checking target ' . $target, 10);
# Force target acquirement. # Force target acquirement.
$self->{'task_data'}->{'dbhost'} = $target; $self->{'task_data'}->{'dbhost'} = $target;
@ -1633,7 +1633,7 @@ sub app_scan($) {
# Verify if object is connected. If cannot connect to current target # Verify if object is connected. If cannot connect to current target
# return with module. # return with module.
if (!$obj->is_connected()) { if (!$obj->is_connected()) {
call('message', 'Cannot connect to target ' . $target, 3); $self->call('message', 'Cannot connect to target ' . $target, 3);
$global_percent += $global_step; $global_percent += $global_step;
$self->{'c_network_percent'} = 90; $self->{'c_network_percent'} = 90;
@ -1739,7 +1739,7 @@ sub deploy_scan($) {
if (!$deployer) { if (!$deployer) {
# Failed to initialize, check Cloud credentials or anything. # Failed to initialize, check Cloud credentials or anything.
call('message', 'Unable to initialize PandoraFMS::Recon::Deployer', 3); $self->call('message', 'Unable to initialize PandoraFMS::Recon::Deployer', 3);
} else { } else {
# Let deployer object manage scan. # Let deployer object manage scan.

View File

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

View File

@ -3,7 +3,7 @@
# #
%define name pandorafms_server %define name pandorafms_server
%define version 7.0NG.742 %define version 7.0NG.742
%define release 200110 %define release 200127
Summary: Pandora FMS Server Summary: Pandora FMS Server
Name: %{name} Name: %{name}
@ -47,6 +47,7 @@ rm -rf $RPM_BUILD_ROOT
%setup -q -n pandora_server %setup -q -n pandora_server
%build %build
%install %install
rm -rf $RPM_BUILD_ROOT rm -rf $RPM_BUILD_ROOT

View File

@ -9,7 +9,7 @@
# ********************************************************************** # **********************************************************************
PI_VERSION="7.0NG.742" PI_VERSION="7.0NG.742"
PI_BUILD="200110" PI_BUILD="200127"
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.742 PS200110"; my $version = "7.0NG.742 PS200127";
# Pandora server configuration # Pandora server configuration
my %conf; my %conf;

View File

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