Merge branch 'develop' into ent-12101-cambiar-script-de-instalacion-para-apuntar-al-paquete-x64-de-la-consola-open
This commit is contained in:
commit
8e27c57917
|
@ -1,5 +1,5 @@
|
|||
package: pandorafms-agent-unix
|
||||
Version: 7.0NG.774-231107
|
||||
Version: 7.0NG.774-231122
|
||||
Architecture: all
|
||||
Priority: optional
|
||||
Section: admin
|
||||
|
|
|
@ -14,7 +14,7 @@
|
|||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
|
||||
pandora_version="7.0NG.774-231107"
|
||||
pandora_version="7.0NG.774-231122"
|
||||
|
||||
echo "Test if you has the tools for to make the packages."
|
||||
whereis dpkg-deb | cut -d":" -f2 | grep dpkg-deb > /dev/null
|
||||
|
|
|
@ -1039,7 +1039,7 @@ my $Sem = undef;
|
|||
my $ThreadSem = undef;
|
||||
|
||||
use constant AGENT_VERSION => '7.0NG.774';
|
||||
use constant AGENT_BUILD => '231107';
|
||||
use constant AGENT_BUILD => '231122';
|
||||
|
||||
# Agent log default file size maximum and instances
|
||||
use constant DEFAULT_MAX_LOG_SIZE => 600000;
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
%global __os_install_post %{nil}
|
||||
%define name pandorafms_agent_linux
|
||||
%define version 7.0NG.774
|
||||
%define release 231107
|
||||
%define release 231122
|
||||
|
||||
Summary: Pandora FMS Linux agent, PERL version
|
||||
Name: %{name}
|
||||
|
|
|
@ -4,8 +4,8 @@
|
|||
%global __os_install_post %{nil}
|
||||
%define name pandorafms_agent_linux_bin
|
||||
%define source_name pandorafms_agent_linux
|
||||
%define version 7.0NG.773.3
|
||||
%define release 230919
|
||||
%define version 7.0NG.774
|
||||
%define release 231122
|
||||
%define debug_package %{nil}
|
||||
|
||||
Summary: Pandora FMS Linux agent, binary version
|
||||
|
|
|
@ -4,8 +4,8 @@
|
|||
%global __os_install_post %{nil}
|
||||
%define name pandorafms_agent_linux_bin
|
||||
%define source_name pandorafms_agent_linux
|
||||
%define version 7.0NG.773.3
|
||||
%define release 230919
|
||||
%define version 7.0NG.774
|
||||
%define release 231122
|
||||
%define debug_package %{nil}
|
||||
|
||||
Summary: Pandora FMS Linux agent, binary version
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
%define name pandorafms_agent_linux_bin
|
||||
%define source_name pandorafms_agent_linux
|
||||
%define version 7.0NG.774
|
||||
%define release 231107
|
||||
%define release 231122
|
||||
|
||||
Summary: Pandora FMS Linux agent, binary version
|
||||
Name: %{name}
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
%global __os_install_post %{nil}
|
||||
%define name pandorafms_agent_linux
|
||||
%define version 7.0NG.774
|
||||
%define release 231107
|
||||
%define release 231122
|
||||
|
||||
Summary: Pandora FMS Linux agent, PERL version
|
||||
Name: %{name}
|
||||
|
|
|
@ -10,7 +10,7 @@
|
|||
# **********************************************************************
|
||||
|
||||
PI_VERSION="7.0NG.774"
|
||||
PI_BUILD="231107"
|
||||
PI_BUILD="231122"
|
||||
OS_NAME=`uname -s`
|
||||
|
||||
FORCE=0
|
||||
|
|
|
@ -186,7 +186,7 @@ UpgradeApplicationID
|
|||
{}
|
||||
|
||||
Version
|
||||
{231107}
|
||||
{231122}
|
||||
|
||||
ViewReadme
|
||||
{Yes}
|
||||
|
|
|
@ -30,7 +30,7 @@ using namespace Pandora;
|
|||
using namespace Pandora_Strutils;
|
||||
|
||||
#define PATH_SIZE _MAX_PATH+1
|
||||
#define PANDORA_VERSION ("7.0NG.774 Build 231107")
|
||||
#define PANDORA_VERSION ("7.0NG.774 Build 231122")
|
||||
|
||||
string pandora_path;
|
||||
string pandora_dir;
|
||||
|
|
|
@ -11,7 +11,7 @@ BEGIN
|
|||
VALUE "LegalCopyright", "Pandora FMS"
|
||||
VALUE "OriginalFilename", "PandoraAgent.exe"
|
||||
VALUE "ProductName", "Pandora FMS Windows Agent"
|
||||
VALUE "ProductVersion", "(7.0NG.774(Build 231107))"
|
||||
VALUE "ProductVersion", "(7.0NG.774(Build 231122))"
|
||||
VALUE "FileVersion", "1.0.0.0"
|
||||
END
|
||||
END
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
package: pandorafms-console
|
||||
Version: 7.0NG.774-231107
|
||||
Version: 7.0NG.774-231122
|
||||
Architecture: all
|
||||
Priority: optional
|
||||
Section: admin
|
||||
|
|
|
@ -14,7 +14,7 @@
|
|||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
|
||||
pandora_version="7.0NG.774-231107"
|
||||
pandora_version="7.0NG.774-231122"
|
||||
|
||||
package_pear=0
|
||||
package_pandora=1
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -922,6 +922,23 @@ $tableAdvancedAgent->data['safe_operation'][] = html_print_label_input_block(
|
|||
)
|
||||
);
|
||||
|
||||
$tableAdvancedAgent->data['vul_scan_enabled'][] = html_print_label_input_block(
|
||||
__('Vulnerability scanning'),
|
||||
html_print_select(
|
||||
[
|
||||
0 => __('Disabled'),
|
||||
1 => __('Enabled'),
|
||||
2 => __('Use global settings'),
|
||||
],
|
||||
'vul_scan_enabled',
|
||||
$vul_scan_enabled,
|
||||
'',
|
||||
'',
|
||||
0,
|
||||
true
|
||||
)
|
||||
);
|
||||
|
||||
ui_toggle(
|
||||
html_print_table($tableAdvancedAgent, true),
|
||||
'<span class="subsection_header_title">'.__('Advanced options').'</span>',
|
||||
|
|
|
@ -231,6 +231,7 @@ if ($create_agent) {
|
|||
$quiet = (int) get_parameter('quiet', 0);
|
||||
$cps = (int) get_parameter_switch('cps', -1);
|
||||
$fixed_ip = (int) get_parameter_switch('fixed_ip', 0);
|
||||
$vul_scan_enabled = (int) get_parameter_switch('vul_scan_enabled', 2);
|
||||
|
||||
$secondary_groups = (array) get_parameter('secondary_groups_selected', '');
|
||||
$fields = db_get_all_fields_in_table('tagent_custom_fields');
|
||||
|
@ -298,6 +299,7 @@ if ($create_agent) {
|
|||
'quiet' => $quiet,
|
||||
'cps' => $cps,
|
||||
'fixed_ip' => $fixed_ip,
|
||||
'vul_scan_enabled' => $vul_scan_enabled,
|
||||
]
|
||||
);
|
||||
} else {
|
||||
|
@ -610,6 +612,7 @@ if ($id_agente) {
|
|||
$agent_wizard['active'] = false;
|
||||
}
|
||||
|
||||
|
||||
if (check_acl_one_of_groups($config['id_user'], $all_groups, 'AW') === true) {
|
||||
if ($has_remote_conf !== false) {
|
||||
$agent_name = agents_get_name($id_agente);
|
||||
|
@ -642,24 +645,26 @@ if ($id_agente) {
|
|||
'collection' => $collectiontab,
|
||||
'group' => $grouptab,
|
||||
'gis' => $gistab,
|
||||
'vulnerabilities' => $vulnerabilities,
|
||||
'agent_wizard' => $agent_wizard,
|
||||
];
|
||||
} else {
|
||||
$onheader = [
|
||||
'view' => $viewtab,
|
||||
'separator' => '',
|
||||
'main' => $maintab,
|
||||
'module' => $moduletab,
|
||||
'ncm' => $ncm_tab,
|
||||
'alert' => $alerttab,
|
||||
'template' => $templatetab,
|
||||
'inventory' => $inventorytab,
|
||||
'pluginstab' => $pluginstab,
|
||||
'policy' => (enterprise_installed() === true) ? $policyTab : '',
|
||||
'collection' => $collectiontab,
|
||||
'group' => $grouptab,
|
||||
'gis' => $gistab,
|
||||
'agent_wizard' => $agent_wizard,
|
||||
'view' => $viewtab,
|
||||
'separator' => '',
|
||||
'main' => $maintab,
|
||||
'module' => $moduletab,
|
||||
'ncm' => $ncm_tab,
|
||||
'alert' => $alerttab,
|
||||
'template' => $templatetab,
|
||||
'inventory' => $inventorytab,
|
||||
'pluginstab' => $pluginstab,
|
||||
'policy' => (enterprise_installed() === true) ? $policyTab : '',
|
||||
'collection' => $collectiontab,
|
||||
'group' => $grouptab,
|
||||
'gis' => $gistab,
|
||||
'vulnerabilities' => $vulnerabilities,
|
||||
'agent_wizard' => $agent_wizard,
|
||||
];
|
||||
}
|
||||
|
||||
|
@ -760,6 +765,11 @@ if ($id_agente) {
|
|||
$help_header = 'gis_tab';
|
||||
break;
|
||||
|
||||
case 'vulnerabilities':
|
||||
$tab_name = __('Vulnerabilities');
|
||||
$help_header = 'vulnerabilities_tab';
|
||||
break;
|
||||
|
||||
case 'incident':
|
||||
$tab_name = __('Incidents');
|
||||
break;
|
||||
|
@ -1004,6 +1014,7 @@ if ($update_agent) {
|
|||
$secondary_groups = (array) get_parameter('secondary_groups_selected', '');
|
||||
$satellite_server = (int) get_parameter('satellite_server', 0);
|
||||
$fixed_ip = (int) get_parameter_switch('fixed_ip', 0);
|
||||
$vul_scan_enabled = (int) get_parameter_switch('vul_scan_enabled', 2);
|
||||
|
||||
if ($fields === false) {
|
||||
$fields = [];
|
||||
|
@ -1130,6 +1141,7 @@ if ($update_agent) {
|
|||
'safe_mode_module' => $safe_mode_module,
|
||||
'satellite_server' => $satellite_server,
|
||||
'fixed_ip' => $fixed_ip,
|
||||
'vul_scan_enabled' => $vul_scan_enabled,
|
||||
];
|
||||
|
||||
if ($config['metaconsole_agent_cache'] == 1) {
|
||||
|
@ -1287,6 +1299,7 @@ if ($id_agente) {
|
|||
$safe_mode = ($safe_mode_module) ? 1 : 0;
|
||||
$satellite_server = (int) $agent['satellite_server'];
|
||||
$fixed_ip = (int) $agent['fixed_ip'];
|
||||
$vul_scan_enabled = (int) $agent['vul_scan_enabled'];
|
||||
}
|
||||
|
||||
$update_module = (bool) get_parameter('update_module');
|
||||
|
@ -2425,6 +2438,10 @@ switch ($tab) {
|
|||
include 'agent_conf_gis.php';
|
||||
break;
|
||||
|
||||
case 'vulnerabilities':
|
||||
include enterprise_include('godmode/agentes/vulnerabilities_editor.php');
|
||||
break;
|
||||
|
||||
case 'incident':
|
||||
include 'agent_incidents.php';
|
||||
break;
|
||||
|
|
|
@ -1387,7 +1387,7 @@ $table_advanced->data['made_enabled'][0] = html_print_checkbox_switch(
|
|||
'made_enabled',
|
||||
1,
|
||||
(bool) $made_enabled,
|
||||
false,
|
||||
true,
|
||||
false,
|
||||
'',
|
||||
false,
|
||||
|
|
|
@ -269,15 +269,14 @@ $size_pagination .= '</div>';
|
|||
// Home screen.
|
||||
$home_screen = '<div class="label_select"><p class="edit_user_labels">'.__('Home screen').ui_print_help_tip(__('User can customize the home page. By default, will display \'Agent Detail\'. Example: Select \'Other\' and type index.php?sec=estado&sec2=operation/agentes/ver_agente&id_agente=1 to show agent detail view'), true).'</p>';
|
||||
$values = [
|
||||
'-1' => __('No change'),
|
||||
'Default' => __('Default'),
|
||||
'Visual console' => __('Visual console'),
|
||||
'Event list' => __('Event list'),
|
||||
'Group view' => __('Group view'),
|
||||
'Tactical view' => __('Tactical view'),
|
||||
'Alert detail' => __('Alert detail'),
|
||||
'Other' => __('Other'),
|
||||
'Dashboard' => __('Dashboard'),
|
||||
HOME_SCREEN_DEFAULT => __('Default'),
|
||||
HOME_SCREEN_VISUAL_CONSOLE => __('Visual console'),
|
||||
HOME_SCREEN_EVENT_LIST => __('Event list'),
|
||||
HOME_SCREEN_GROUP_VIEW => __('Group view'),
|
||||
HOME_SCREEN_TACTICAL_VIEW => __('Tactical view'),
|
||||
HOME_SCREEN_ALERT_DETAIL => __('Alert detail'),
|
||||
HOME_SCREEN_OTHER => __('Other'),
|
||||
HOME_SCREEN_DASHBOARD => __('Dashboard'),
|
||||
];
|
||||
|
||||
$home_screen .= html_print_select(
|
||||
|
|
|
@ -80,12 +80,17 @@ $options_agents = [
|
|||
];
|
||||
|
||||
if (check_acl($config['id_user'], 0, 'UM')) {
|
||||
$options_users['edit_users'] = __('Edit users in bulk');
|
||||
$options_users = [
|
||||
'edit_users' => __('Edit users in bulk'),
|
||||
];
|
||||
|
||||
if (is_metaconsole() === false) {
|
||||
$options_users = [
|
||||
$options_profiles = [
|
||||
'add_profiles' => __('Bulk profile add'),
|
||||
'delete_profiles' => __('Bulk profile delete'),
|
||||
];
|
||||
|
||||
$options_users = array_merge(array_slice($options_users, 0, count($options_users)), $options_profiles, array_slice($options_users, count($options_users)));
|
||||
}
|
||||
} else {
|
||||
$options_users = [];
|
||||
|
|
|
@ -571,6 +571,7 @@ if (!$maps && is_metaconsole() === false) {
|
|||
}
|
||||
|
||||
if ($maps || is_metaconsole() === true) {
|
||||
$buttons = '';
|
||||
if ($vconsoles_write || $vconsoles_manage) {
|
||||
if (is_metaconsole() === false) {
|
||||
$actionUrl = 'index.php?sec=network&sec2=godmode/reporting/visual_console_builder';
|
||||
|
@ -578,20 +579,22 @@ if ($maps || is_metaconsole() === true) {
|
|||
$actionUrl = 'index.php?sec=screen&sec2=screens/screens&action=visualmap&action2=new&operation=new_visualmap&tab=data&pure='.$pure;
|
||||
}
|
||||
|
||||
echo '<form action="'.$actionUrl.'" method="post">';
|
||||
html_print_input_hidden('edit_layout', 1);
|
||||
$buttons .= '<form action="'.$actionUrl.'" method="post">';
|
||||
$buttons .= html_print_input_hidden('edit_layout', 1, true);
|
||||
|
||||
html_print_action_buttons(
|
||||
html_print_submit_button(
|
||||
__('Create'),
|
||||
'',
|
||||
false,
|
||||
[ 'icon' => 'next'],
|
||||
true
|
||||
),
|
||||
[ 'right_content' => $tablePagination ]
|
||||
$buttons .= html_print_submit_button(
|
||||
__('Create'),
|
||||
'',
|
||||
false,
|
||||
[ 'icon' => 'next'],
|
||||
true
|
||||
);
|
||||
|
||||
echo '</form>';
|
||||
$buttons .= '</form>';
|
||||
}
|
||||
|
||||
html_print_action_buttons(
|
||||
$buttons,
|
||||
[ 'right_content' => $tablePagination ]
|
||||
);
|
||||
}
|
||||
|
|
|
@ -1589,7 +1589,7 @@ if (is_metaconsole() === true) {
|
|||
<?php
|
||||
html_print_extended_select_for_time(
|
||||
'period',
|
||||
$period,
|
||||
(string) $period,
|
||||
'check_period_warning(this, \''.__('Warning').'\', \''.__('Displaying items with extended historical data can have an impact on system performance. We do not recommend that you use intervals longer than 30 days, especially if you combine several of them in a report, dashboard or visual console.').'\')',
|
||||
'',
|
||||
'0',
|
||||
|
@ -1697,6 +1697,39 @@ if (is_metaconsole() === true) {
|
|||
?>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="row_period2" class="datos">
|
||||
<td class="bolder">
|
||||
<?php
|
||||
echo __('Time lapse');
|
||||
ui_print_help_tip(
|
||||
__('This is the range, or period of time over which the report renders the information for this report type. For example, a week means data from a week ago from now. ')
|
||||
);
|
||||
?>
|
||||
</td>
|
||||
<td >
|
||||
<?php
|
||||
html_print_extended_select_for_time(
|
||||
'period',
|
||||
(string) $period,
|
||||
'onselect=loadLogAgents();',
|
||||
'',
|
||||
'0',
|
||||
10,
|
||||
false,
|
||||
false,
|
||||
false,
|
||||
'',
|
||||
false,
|
||||
false,
|
||||
'',
|
||||
false,
|
||||
0,
|
||||
null,
|
||||
'check_period_warning_manual(\'period\', \''.__('Warning').'\', \''.__('Displaying items with extended historical data can have an impact on system performance. We do not recommend that you use intervals longer than 30 days, especially if you combine several of them in a report, dashboard or visual console.').'\')'
|
||||
);
|
||||
?>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="row_estimate" class="datos">
|
||||
<td class="bolder">
|
||||
<?php
|
||||
|
@ -6685,7 +6718,7 @@ function loadLogAgents() {
|
|||
params["get_agent_source"] = 1;
|
||||
params["log_alert"] = 1;
|
||||
params["page"] = "enterprise/include/ajax/log_viewer.ajax";
|
||||
|
||||
params["date"] = $('#period_select').val();
|
||||
jQuery.ajax({
|
||||
data: params,
|
||||
dataType: "json",
|
||||
|
@ -6693,9 +6726,9 @@ function loadLogAgents() {
|
|||
url: "ajax.php",
|
||||
async: true,
|
||||
success: function(data) {
|
||||
$('#id_agents3')
|
||||
.find('option')
|
||||
.remove();
|
||||
$('#id_agents3').find('option').remove();
|
||||
$('#source option[value!=""]').remove();
|
||||
|
||||
$.each(data['source'],function(key,value) {
|
||||
if (value === source) {
|
||||
$('#source').append( `<option selected='selected' value='${key}'>${value}</option>`);
|
||||
|
@ -6725,10 +6758,10 @@ function chooseType() {
|
|||
$("#row_period_range").hide();
|
||||
$("#row_agent").hide();
|
||||
$("#row_module").hide();
|
||||
$("#row_period").hide();
|
||||
$("#row_search").hide();
|
||||
$("#row_log_number").hide();
|
||||
$("#row_period1").hide();
|
||||
$("#row_period2").hide();
|
||||
$("#row_estimate").hide();
|
||||
$("#row_interval").hide();
|
||||
$("#row_custom_graph").hide();
|
||||
|
@ -6895,7 +6928,7 @@ function chooseType() {
|
|||
case 'event_report_log':
|
||||
$("#log_help_tip").css("visibility", "visible");
|
||||
$("#row_description").show();
|
||||
$("#row_period").show();
|
||||
$("#row_period2").show();
|
||||
$("#row_search").show();
|
||||
$("#row_log_number").show();
|
||||
$("#agents_row").show();
|
||||
|
@ -6909,7 +6942,7 @@ function chooseType() {
|
|||
case 'event_report_log_table':
|
||||
$("#log_help_tip").css("visibility", "visible");
|
||||
$("#row_description").show();
|
||||
$("#row_period").show();
|
||||
$("#row_period2").show();
|
||||
$("#row_period_range").show();
|
||||
$("#row_search").show();
|
||||
$("#row_log_number").show();
|
||||
|
@ -7904,8 +7937,10 @@ function source_change_agents() {
|
|||
$("#id_agents3 option").attr("style","display:none");
|
||||
|
||||
var params = {};
|
||||
params["get_agent_source"] = 1;
|
||||
params["get_agents_by_source"] = 1;
|
||||
params["page"] = "enterprise/include/ajax/log_viewer.ajax";
|
||||
params["date"] = '<?php echo SECONDS_1MONTH; ?>';
|
||||
params["sources"] = JSON.stringify(source);
|
||||
|
||||
jQuery.ajax({
|
||||
data: params,
|
||||
|
@ -7914,19 +7949,8 @@ function source_change_agents() {
|
|||
url: "ajax.php",
|
||||
async: true,
|
||||
success: function(data) {
|
||||
let source_array = [];
|
||||
$.each(data['source'],function(key,value) {
|
||||
if (value === source) {
|
||||
const split = key.split('-');
|
||||
source_array.push(split[1]);
|
||||
}
|
||||
});
|
||||
|
||||
$.each(data['agent'],function(key,value) {
|
||||
const result = source_array.includes(key);
|
||||
if (result === true) {
|
||||
$(`#id_agents3 option[value*='${key}']`).attr("style","display:");
|
||||
}
|
||||
$.each(data,function(key,value) {
|
||||
$(`#id_agents3 option[value*='${value}']`).attr("style","display:");
|
||||
});
|
||||
|
||||
$("#spinner_hack").hide();
|
||||
|
@ -7955,7 +7979,7 @@ function dialog_message(message_id) {
|
|||
}
|
||||
function control_period_range() {
|
||||
let value_period_range = $('#row_period_range #hidden-period_range').val();
|
||||
let current_value = $('#row_period #hidden-period').val();
|
||||
let current_value = $('#row_period2 #hidden-period').val();
|
||||
let min_range = (current_value/12);
|
||||
if(min_range > value_period_range) {
|
||||
$('#row_period_range div:nth-child(2) select option').removeAttr("selected");
|
||||
|
@ -8003,10 +8027,10 @@ function control_period_range() {
|
|||
$(document).ready(function () {
|
||||
$('[id^=period], #combo_graph_options, #combo_sla_sort_options').next().css('z-index', 0);
|
||||
|
||||
$('#row_period input').change(function(e){
|
||||
$('#row_period2 input').change(function(e){
|
||||
control_period_range();
|
||||
});
|
||||
$('#row_period select').change(function(e){
|
||||
$('#row_period2 select').change(function(e){
|
||||
control_period_range();
|
||||
});
|
||||
$('#row_period_range input').change(function(e){
|
||||
|
|
|
@ -24,14 +24,6 @@ if (! check_acl($config['id_user'], 0, 'AR')
|
|||
|
||||
ui_require_css_file('discovery');
|
||||
|
||||
ui_require_javascript_file('pandora_alerts');
|
||||
ui_include_time_picker();
|
||||
ui_require_jquery_file('ui.datepicker-'.get_user_language(), 'include/javascript/i18n/');
|
||||
ui_require_javascript_file('tinymce', 'vendor/tinymce/tinymce/');
|
||||
ui_require_css_file('main.min', 'include/javascript/fullcalendar/');
|
||||
ui_require_javascript_file('main.min', 'include/javascript/fullcalendar/');
|
||||
ui_require_javascript_file('pandora_fullcalendar');
|
||||
|
||||
|
||||
/**
|
||||
* Mask class names.
|
||||
|
@ -212,115 +204,3 @@ if ($classname_selected === null) {
|
|||
|
||||
Wizard::printBigButtonsList($wiz_data);
|
||||
}
|
||||
|
||||
$is_management_allowed = is_management_allowed();
|
||||
$task_id = get_parameter('task', '');
|
||||
if ($task_id !== '') {
|
||||
$task = db_get_row_filter(
|
||||
'tuser_task_scheduled',
|
||||
['id' => $task_id]
|
||||
);
|
||||
$args = unserialize($task['args']);
|
||||
$event_calendar = io_safe_output($args['weekly_schedule']);
|
||||
} else {
|
||||
$event_calendar = '{"monday":[{"start":"00:00:00","end":"00:00:00"}],"tuesday":[{"start":"00:00:00","end":"00:00:00"}],"wednesday":[{"start":"00:00:00","end":"00:00:00"}],"thursday":[{"start":"00:00:00","end":"00:00:00"}],"friday":[{"start":"00:00:00","end":"00:00:00"}],"saturday":[{"start":"00:00:00","end":"00:00:00"}],"sunday":[{"start":"00:00:00","end":"00:00:00"}]}';
|
||||
}
|
||||
?>
|
||||
<script type="text/javascript">
|
||||
$(document).ready (function () {
|
||||
$("#table-new-job-3").hide();
|
||||
var edit = '<?php echo $task_id; ?>';
|
||||
if (edit != '') {
|
||||
exec_calendar();
|
||||
}
|
||||
|
||||
$("#scheduled").change(exec_calendar);
|
||||
|
||||
function exec_calendar() {
|
||||
if ($("#scheduled").val() == "weekly") {
|
||||
var is_management_allowed = parseInt('<?php echo (int) $is_management_allowed; ?>');
|
||||
var eventsBBDD = '<?php echo $event_calendar; ?>';
|
||||
var events = loadEventBBDD(eventsBBDD);
|
||||
var calendarEl = document.getElementById('calendar_map');
|
||||
|
||||
var options = {
|
||||
contentHeight: "auto",
|
||||
headerToolbar: {
|
||||
left: "",
|
||||
center: "",
|
||||
right: is_management_allowed === 0 ? '' : "timeGridWeek,dayGridWeek"
|
||||
},
|
||||
buttonText: {
|
||||
dayGridWeek: '<?php echo __('Simple'); ?>',
|
||||
timeGridWeek: '<?php echo __('Detailed'); ?>'
|
||||
},
|
||||
dayHeaderFormat: { weekday: "short" },
|
||||
initialView: "dayGridWeek",
|
||||
navLinks: false,
|
||||
selectable: true,
|
||||
selectMirror: true,
|
||||
slotDuration: "01:00:00",
|
||||
slotLabelInterval: "02:00:00",
|
||||
snapDuration: "01:00:00",
|
||||
slotMinTime: "00:00:00",
|
||||
slotMaxTime: "24:00:00",
|
||||
scrollTime: "01:00:00",
|
||||
locale: "en-GB",
|
||||
firstDay: 1,
|
||||
eventTimeFormat: {
|
||||
hour: "numeric",
|
||||
minute: "2-digit",
|
||||
hour12: false
|
||||
},
|
||||
eventColor: "#82b92e",
|
||||
editable: is_management_allowed === 0 ? false : true,
|
||||
dayMaxEvents: 3,
|
||||
dayPopoverFormat: { weekday: "long" },
|
||||
defaultAllDay: false,
|
||||
displayEventTime: true,
|
||||
displayEventEnd: true,
|
||||
selectOverlap: false,
|
||||
eventOverlap: false,
|
||||
allDaySlot: true,
|
||||
droppable: false,
|
||||
select: is_management_allowed === 0 ? false : select_alert_template,
|
||||
selectAllow: is_management_allowed === 0 ? false : selectAllow_alert_template,
|
||||
eventAllow: is_management_allowed === 0 ? false : eventAllow_alert_template,
|
||||
eventDrop: is_management_allowed === 0 ? false : eventDrop_alert_template,
|
||||
eventDragStop: is_management_allowed === 0 ? false : eventDragStop_alert_template,
|
||||
eventResize: is_management_allowed === 0 ? false : eventResize_alert_template,
|
||||
eventMouseEnter: is_management_allowed === 0 ? false : eventMouseEnter_alert_template,
|
||||
eventMouseLeave: is_management_allowed === 0 ? false : eventMouseLeave_alert_template,
|
||||
eventClick: is_management_allowed === 0 ? false : eventClick_alert_template,
|
||||
};
|
||||
|
||||
var settings = {
|
||||
timeFormat: '<?php echo TIME_FORMAT_JS; ?>',
|
||||
timeOnlyTitle: '<?php echo __('Choose time'); ?>',
|
||||
timeText: '<?php echo __('Time'); ?>',
|
||||
hourText: '<?php echo __('Hour'); ?>',
|
||||
minuteText: '<?php echo __('Minute'); ?>',
|
||||
secondText: '<?php echo __('Second'); ?>',
|
||||
currentText: '<?php echo __('Now'); ?>',
|
||||
closeText: '<?php echo __('Close'); ?>',
|
||||
url: '<?php echo ui_get_full_url('ajax.php', false, false, false); ?>',
|
||||
removeText: '<?php echo __('Remove'); ?>',
|
||||
userLanguage: '<?php echo get_user_language(); ?>',
|
||||
loadingText: '<?php echo __('Loading, this operation might take several minutes...'); ?>',
|
||||
tooltipText: '<?php echo __('Drag out to remove'); ?>',
|
||||
alert: '<?php echo __('Alert'); ?>'
|
||||
}
|
||||
|
||||
var calendar = fullCalendarPandora(calendarEl, options, settings, events);
|
||||
calendar.render();
|
||||
|
||||
$("#table-new-job-3").show();
|
||||
$('.fc-event-title').hide();
|
||||
$(".fc-button-active" ).trigger( "click" );
|
||||
} else {
|
||||
$("#calendar_map").html();
|
||||
$("#table-new-job-3").hide();
|
||||
}
|
||||
}
|
||||
});
|
||||
</script>
|
|
@ -97,6 +97,24 @@ try {
|
|||
'column_names' => $column_names,
|
||||
'ajax_url' => 'include/ajax/os',
|
||||
'ajax_data' => ['method' => 'drawOSTable'],
|
||||
'pagination_options' => [
|
||||
[
|
||||
$config['block_size'],
|
||||
10,
|
||||
25,
|
||||
100,
|
||||
200,
|
||||
500,
|
||||
],
|
||||
[
|
||||
$config['block_size'],
|
||||
10,
|
||||
25,
|
||||
100,
|
||||
200,
|
||||
500,
|
||||
],
|
||||
],
|
||||
'ajax_postprocess' => 'process_datatables_item(item)',
|
||||
'no_sortable_columns' => [
|
||||
-1,
|
||||
|
@ -137,6 +155,10 @@ if (is_metaconsole() === true) {
|
|||
true
|
||||
);
|
||||
$buttons .= '</form>';
|
||||
} else {
|
||||
$buttons .= '<form method="post" action="index.php?sec=gagente&sec2=godmode/setup/os&tab=manage_os&action=edit">';
|
||||
$buttons .= html_print_submit_button(__('Create OS'), 'update_button', false, ['icon' => 'next'], true);
|
||||
$buttons .= '</form>';
|
||||
}
|
||||
|
||||
html_print_action_buttons(
|
||||
|
@ -150,15 +172,6 @@ html_print_action_buttons(
|
|||
|
||||
echo '<div id="aux" class="invisible"></div>';
|
||||
|
||||
echo '<form method="post" action="index.php?sec=gagente&sec2=godmode/setup/os&tab=manage_os&action=edit">';
|
||||
|
||||
html_print_action_buttons(
|
||||
html_print_submit_button(__('Create OS'), 'update_button', false, ['icon' => 'next'], true),
|
||||
['type' => 'form_action']
|
||||
);
|
||||
|
||||
echo '</form>';
|
||||
|
||||
?>
|
||||
<script language="javascript" type="text/javascript">
|
||||
function process_datatables_item(item) {
|
||||
|
|
|
@ -767,6 +767,7 @@ $table->data[$i][] = html_print_label_input_block(
|
|||
)
|
||||
);
|
||||
|
||||
|
||||
echo '<form class="max_floating_element_size" id="form_setup" method="post" action="index.php?sec=gsetup&sec2=godmode/setup/setup&section=general&pure='.$config['pure'].'">';
|
||||
|
||||
echo '<fieldset class="margin-bottom-10">';
|
||||
|
|
|
@ -2129,6 +2129,15 @@ $table_other->data[$row][] = html_print_label_input_block(
|
|||
__('Data multiplier to use in graphs/data'),
|
||||
html_print_select($options_data_multiplier, 'use_data_multiplier', $config['use_data_multiplier'], '', '', 1, true, false, false)
|
||||
);
|
||||
$table_other->data[$row][] = html_print_label_input_block(
|
||||
__('Hide general stats for non admin users in tactical view'),
|
||||
html_print_checkbox_switch(
|
||||
'disable_general_statistics',
|
||||
1,
|
||||
$config['disable_general_statistics'],
|
||||
true
|
||||
)
|
||||
);
|
||||
$row++;
|
||||
|
||||
/*
|
||||
|
|
|
@ -53,12 +53,30 @@ try {
|
|||
echo 'current historyDB MR: '.Config::get('MR', 'unknown', true)."\n";
|
||||
}
|
||||
|
||||
global $pandora_version;
|
||||
if (isset($pandora_version) === true
|
||||
&& empty($pandora_version) === false
|
||||
) {
|
||||
$version_array = explode('.', $pandora_version);
|
||||
if (is_array($version_array) === true) {
|
||||
$current_package = $version_array[2];
|
||||
if (count($version_array) > 2) {
|
||||
foreach ($version_array as $key => $value) {
|
||||
if ($key > 2) {
|
||||
$current_package .= '.'.$value;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$umc = new UpdateManager\Client(
|
||||
[
|
||||
'homedir' => $config['homedir'],
|
||||
'dbconnection' => $config['dbconnection'],
|
||||
'historydb' => $historical_dbh,
|
||||
'MR' => (int) $current_mr,
|
||||
'homedir' => $config['homedir'],
|
||||
'dbconnection' => $config['dbconnection'],
|
||||
'historydb' => $historical_dbh,
|
||||
'MR' => (int) $current_mr,
|
||||
'current_package' => ($current_package ?? ''),
|
||||
]
|
||||
);
|
||||
|
||||
|
|
|
@ -33,8 +33,6 @@ check_login();
|
|||
|
||||
require_once $config['homedir'].'/vendor/autoload.php';
|
||||
|
||||
use PandoraFMS\Dashboard\Manager;
|
||||
|
||||
require_once $config['homedir'].'/include/functions_profile.php';
|
||||
require_once $config['homedir'].'/include/functions_users.php';
|
||||
require_once $config['homedir'].'/include/functions_groups.php';
|
||||
|
@ -1376,72 +1374,6 @@ if (is_metaconsole() === true) {
|
|||
);
|
||||
}
|
||||
|
||||
$values = [
|
||||
-1 => __('Use global conf'),
|
||||
1 => __('Yes'),
|
||||
0 => __('No'),
|
||||
];
|
||||
|
||||
$home_screen = '<div class="label_select"><p class="edit_user_labels">'.__('Home screen').ui_print_help_tip(
|
||||
__('User can customize the home page. By default, will display \'Agent Detail\'. Example: Select \'Other\' and type index.php?sec=estado&sec2=operation/agentes/ver_agente&id_agente=1 to show agent detail view'),
|
||||
true
|
||||
).'</p>';
|
||||
|
||||
$dashboards = Manager::getDashboards(
|
||||
-1,
|
||||
-1,
|
||||
false,
|
||||
false,
|
||||
$id_usr
|
||||
);
|
||||
|
||||
$dashboards_aux = [];
|
||||
if ($dashboards === false) {
|
||||
$dashboards = ['None' => 'None'];
|
||||
} else {
|
||||
foreach ($dashboards as $key => $dashboard) {
|
||||
$dashboards_aux[$dashboard['id']] = $dashboard['name'];
|
||||
}
|
||||
}
|
||||
|
||||
$home_screen .= '<div id="show_db" style="display: none; width: 100%;">';
|
||||
$home_screen .= html_print_select($dashboards_aux, 'dashboard', $user_info['data_section'], '', '', '', true);
|
||||
$home_screen .= '</div>';
|
||||
|
||||
$layouts = visual_map_get_user_layouts($config['id_user'], true);
|
||||
$layouts_aux = [];
|
||||
if ($layouts === false) {
|
||||
$layouts_aux = ['None' => 'None'];
|
||||
} else {
|
||||
foreach ($layouts as $layout) {
|
||||
$layouts_aux[$layout] = $layout;
|
||||
}
|
||||
}
|
||||
|
||||
$home_screen .= '<div id="show_vc" style="display: none; width: 100%;">';
|
||||
$home_screen .= html_print_select(
|
||||
$layouts_aux,
|
||||
'visual_console',
|
||||
$user_info['data_section'],
|
||||
'',
|
||||
'',
|
||||
'',
|
||||
true
|
||||
);
|
||||
$home_screen .= '</div>';
|
||||
|
||||
$home_screen .= html_print_input_text(
|
||||
'data_section',
|
||||
$user_info['data_section'],
|
||||
'',
|
||||
60,
|
||||
255,
|
||||
true,
|
||||
false
|
||||
);
|
||||
|
||||
$home_screen = '';
|
||||
|
||||
$size_pagination = '<div class="label_select_simple"><p class="edit_user_labels">'.__('Block size for pagination').'</p>';
|
||||
$size_pagination .= html_print_input_text(
|
||||
'block_size',
|
||||
|
@ -2078,17 +2010,20 @@ if (is_metaconsole() === false) {
|
|||
}
|
||||
|
||||
function show_data_section() {
|
||||
var $section = $("#section").val();
|
||||
var $allElements = $('div[id^="custom_home_screen_"]');
|
||||
var $elementSelected = $('div[id="custom_home_screen_' + $section + '"]');
|
||||
var section = $("#section").val();
|
||||
if(section === 'other'){
|
||||
section = 'external_link';
|
||||
}
|
||||
var allElements = $('div[id^="custom_home_screen_"]');
|
||||
var elementSelected = $('div[id="custom_home_screen_' + section + '"]');
|
||||
// Hide all elements.
|
||||
$allElements.each(function() {
|
||||
allElements.each(function() {
|
||||
$(this).addClass('invisible');
|
||||
$(this).children().addClass('invisible');
|
||||
})
|
||||
// Show only the selected.
|
||||
$elementSelected.removeClass('invisible');
|
||||
$elementSelected.children().removeClass('invisible');
|
||||
elementSelected.removeClass('invisible');
|
||||
elementSelected.children().removeClass('invisible');
|
||||
}
|
||||
|
||||
function switch_ehorus_conf() {
|
||||
|
|
|
@ -26,6 +26,8 @@
|
|||
* ============================================================================
|
||||
*/
|
||||
|
||||
use PandoraFMS\Dashboard\Manager;
|
||||
|
||||
// Load global vars.
|
||||
global $config;
|
||||
|
||||
|
@ -45,16 +47,75 @@ $homeScreenValues = [
|
|||
HOME_SCREEN_DASHBOARD => __('Dashboard'),
|
||||
];
|
||||
|
||||
$dashboards = Manager::getDashboards(
|
||||
-1,
|
||||
-1,
|
||||
false,
|
||||
false,
|
||||
$id_usr
|
||||
);
|
||||
|
||||
$dashboards_aux = [];
|
||||
if ($dashboards === false) {
|
||||
$dashboards = ['None' => 'None'];
|
||||
} else {
|
||||
foreach ($dashboards as $key => $dashboard) {
|
||||
$dashboards_aux[$dashboard['id']] = $dashboard['name'];
|
||||
}
|
||||
}
|
||||
|
||||
// Custom Home Screen controls.
|
||||
$customHomeScreenAddition = [];
|
||||
// Home screen. Dashboard.
|
||||
$customHomeScreenAddition[HOME_SCREEN_DASHBOARD] = html_print_select($dashboards_aux, 'dashboard', $user_info['data_section'], '', '', '', true, false, true, 'w100p', false, 'width: 100%');
|
||||
// Home screen. Visual consoles.
|
||||
$customHomeScreenAddition[HOME_SCREEN_VISUAL_CONSOLE] = html_print_select($layouts_aux, 'visual_console', $user_info['data_section'], '', '', '', true, false, true, 'w100p', false, 'width: 100%');
|
||||
// Home screen. External link and Other.
|
||||
$customHomeScreenAddition[HOME_SCREEN_EXTERNAL_LINK] = html_print_input_text('data_section', $user_info['data_section'], '', 60, 255, true);
|
||||
$customHomeScreenAddition[HOME_SCREEN_OTHER] = html_print_input_text('data_section', $user_info['data_section'], '', 60, 255, true);
|
||||
$customHomeScreenAddition[HOME_SCREEN_DASHBOARD] = html_print_select(
|
||||
$dashboards_aux,
|
||||
'dashboard',
|
||||
$user_info['data_section'],
|
||||
'',
|
||||
'',
|
||||
'',
|
||||
true,
|
||||
false,
|
||||
true,
|
||||
'w100p',
|
||||
false,
|
||||
'width: 100%'
|
||||
);
|
||||
|
||||
$layouts = visual_map_get_user_layouts($config['id_user'], true);
|
||||
$layouts_aux = [];
|
||||
if ($layouts === false) {
|
||||
$layouts_aux = ['None' => 'None'];
|
||||
} else {
|
||||
foreach ($layouts as $layout) {
|
||||
$layouts_aux[$layout] = $layout;
|
||||
}
|
||||
}
|
||||
|
||||
// Home screen. Visual consoles.
|
||||
$customHomeScreenAddition[HOME_SCREEN_VISUAL_CONSOLE] = html_print_select(
|
||||
$layouts_aux,
|
||||
'visual_console',
|
||||
$user_info['data_section'],
|
||||
'',
|
||||
'',
|
||||
'',
|
||||
true,
|
||||
false,
|
||||
true,
|
||||
'w100p',
|
||||
false,
|
||||
'width: 100%'
|
||||
);
|
||||
// Home screen. External link and Other.
|
||||
$customHomeScreenAddition[HOME_SCREEN_EXTERNAL_LINK] = html_print_input_text(
|
||||
'data_section',
|
||||
$user_info['data_section'],
|
||||
'',
|
||||
60,
|
||||
255,
|
||||
true
|
||||
);
|
||||
$customHomeScreenDataField = '';
|
||||
foreach ($customHomeScreenAddition as $key => $customField) {
|
||||
$customHomeScreenDataField .= html_print_div(
|
||||
|
@ -576,7 +637,7 @@ $userManagementTable->data['fields_autorefreshTime'][0] .= ui_print_input_placeh
|
|||
true
|
||||
);
|
||||
|
||||
// eHorus conf
|
||||
// EHorus conf.
|
||||
if (isset($config['ehorus_user_level_conf']) === true && (bool) $config['ehorus_user_level_conf'] === true) {
|
||||
$userManagementTable->data['captions_ehorus_user_level_enabled'][1] = __('Pandora RC user access enabled');
|
||||
$userManagementTable->data['fields_ehorus_user_level_enabled'][1] = html_print_checkbox_switch(
|
||||
|
@ -791,7 +852,7 @@ $userManagementTable->data['fields_addSettings'][0] = html_print_textarea(
|
|||
5,
|
||||
65,
|
||||
$user_info['comments'],
|
||||
($view_mode ? 'readonly="readonly"' : ''),
|
||||
($view_mode) ? 'readonly="readonly"' : '',
|
||||
true,
|
||||
''
|
||||
);
|
||||
|
@ -945,15 +1006,7 @@ $(document).ready(function () {
|
|||
$('#advanced-line1_looknfeel-1 > a').css('display', 'block');
|
||||
})
|
||||
|
||||
var ehorus_user_level_enabled =
|
||||
<?php
|
||||
if (isset($user_info['ehorus_user_level_enabled']) === true) {
|
||||
echo $user_info['ehorus_user_level_enabled'];
|
||||
} else {
|
||||
echo 0;
|
||||
}
|
||||
?>
|
||||
;
|
||||
var ehorus_user_level_enabled = '<?php echo (isset($user_info['ehorus_user_level_enabled']) === true) ? $user_info['ehorus_user_level_enabled'] : 0; ?>';
|
||||
var chk_ehorus_user_level_enabled = ehorus_user_level_enabled;
|
||||
|
||||
if (ehorus_user_level_enabled == 0) {
|
||||
|
|
|
@ -0,0 +1,7 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg width="20px" height="20px" viewBox="0 0 20 20" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<title>Vulnerability scanner@svg</title>
|
||||
<g id="Vulnerability-scanner" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
|
||||
<path d="M1,15 C1.55228475,15 2,15.4477153 2,16 L2,18 L4,18 C4.55228475,18 5,18.4477153 5,19 C5,19.5522847 4.55228475,20 4,20 L1,20 C0.44771525,20 0,19.5522847 0,19 L2.22044605e-16,16 C2.22044605e-16,15.4477153 0.44771525,15 1,15 Z M19,15 C19.5522847,15 20,15.4477153 20,16 L20,19 C20,19.5522847 19.5522847,20 19,20 L16,20 C15.4477153,20 15,19.5522847 15,19 C15,18.4477153 15.4477153,18 16,18 L18,18 L18,16 C18,15.4477153 18.4477153,15 19,15 Z M10,3.054 L10.2249383,3.05813847 C13.4344251,3.17642824 16,5.81560306 16,9.054 L16,14.0937431 L13.104,16.031 L12.0698805,13.7307161 L14.2125487,13.4284958 C14.556044,13.3800462 14.7107272,12.9297411 14.4915053,12.6217094 L10.3337249,6.72755475 C10.2297804,6.58020088 10.0683722,6.50924823 9.91239579,6.53116927 C9.62831588,6.5712384 9.45479699,6.90055719 9.56613598,7.20888317 L10.9914706,11.1541491 L8.78753031,11.4650118 C8.51830424,11.5029857 8.34782116,11.7998997 8.42525378,12.0959539 L9.92,18.054 L4,14.0937431 L4,9.054 C4,5.81560306 6.56557489,3.17642824 9.77506174,3.05813847 L10,3.054 Z M4,0 C4.55228475,-1.01453063e-16 5,0.44771525 5,1 C5,1.55228475 4.55228475,2 4,2 L2,2 L2,4 C2,4.55228475 1.55228475,5 1,5 C0.44771525,5 2.22044605e-16,4.55228475 2.22044605e-16,4 L0,1 C0,0.44771525 0.44771525,1.01453063e-16 1,0 L4,0 Z M19,0 C19.5522847,1.01453063e-16 20,0.44771525 20,1 L20,4 C20,4.55228475 19.5522847,5 19,5 C18.4477153,5 18,4.55228475 18,4 L18,2 L16,2 C15.4477153,2 15,1.55228475 15,1 C15,0.44771525 15.4477153,-1.01453063e-16 16,0 Z" id="Scan" fill="#3F3F3F" transform="translate(10, 10) scale(1, -1) translate(-10, -10)"></path>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 1.9 KiB |
|
@ -0,0 +1,219 @@
|
|||
<?php
|
||||
/**
|
||||
* Update manager client historical updates backend.
|
||||
*
|
||||
* @category Update Manager
|
||||
* @package Pandora FMS
|
||||
* @subpackage Community
|
||||
* @version 1.0.0
|
||||
* @license See below
|
||||
*
|
||||
* ______ ___ _______ _______ ________
|
||||
* | __ \.-----.--.--.--| |.-----.----.-----. | ___| | | __|
|
||||
* | __/| _ | | _ || _ | _| _ | | ___| |__ |
|
||||
* |___| |___._|__|__|_____||_____|__| |___._| |___| |__|_|__|_______|
|
||||
*
|
||||
* ============================================================================
|
||||
* Copyright (c) 2005-2023 Pandora FMS
|
||||
* Please see https://pandorafms.com/community/ for full contribution list
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License
|
||||
* as published by the Free Software Foundation for version 2.
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
* ============================================================================
|
||||
*/
|
||||
|
||||
// Begin.
|
||||
global $config;
|
||||
|
||||
$method = get_parameter('method', null);
|
||||
$filter = get_parameter('filter', '');
|
||||
$urlDashboard = get_parameter('urlDashboard', '');
|
||||
$manageDashboards = get_parameter('manageDashboards', 1);
|
||||
|
||||
if ($method === 'draw') {
|
||||
// Datatables offset, limit and order.
|
||||
$filter = get_parameter('filter', []);
|
||||
$start = get_parameter('start', 0);
|
||||
$length = get_parameter('length', $config['block_size']);
|
||||
$orderBy = get_datatable_order(true);
|
||||
|
||||
$sort_field = $orderBy['field'];
|
||||
$order = $orderBy['direction'];
|
||||
|
||||
$pagination = '';
|
||||
$pagination = sprintf(
|
||||
' LIMIT %d OFFSET %d ',
|
||||
$length,
|
||||
$start,
|
||||
);
|
||||
|
||||
try {
|
||||
$table = new stdClass();
|
||||
$table->width = '100%';
|
||||
$table->class = 'info_table';
|
||||
$table->headstyle['name'] = 'text-align: left;';
|
||||
$table->headstyle['cells'] = 'text-align: center;';
|
||||
$table->headstyle['groups'] = 'text-align: center;';
|
||||
$table->headstyle['favorite'] = 'text-align: center;';
|
||||
$table->headstyle['full_screen'] = 'text-align: center;';
|
||||
|
||||
$table->style = [];
|
||||
$table->style['name'] = 'text-align: left;';
|
||||
$table->style['cells'] = 'text-align: center;';
|
||||
$table->style['groups'] = 'text-align: center;';
|
||||
$table->style['favorite'] = 'text-align: center;';
|
||||
$table->style['full_screen'] = 'text-align: center;';
|
||||
|
||||
$table->size = [];
|
||||
$table->size['name'] = '40%';
|
||||
$table->size['full_screen'] = '30px';
|
||||
|
||||
$table->head = [];
|
||||
$table->head['name'] = __('Name');
|
||||
$table->head['cells'] = __('Cells');
|
||||
$table->head['groups'] = __('Group');
|
||||
$table->head['favorite'] = __('Favorite');
|
||||
$table->head['full_screen'] = __('Full screen');
|
||||
|
||||
if ($manageDashboards === 1) {
|
||||
$table->head['copy'] = __('Copy');
|
||||
$table->head['delete'] = __('Delete');
|
||||
$table->headstyle['copy'] = 'text-align: center;';
|
||||
$table->headstyle['delete'] = 'text-align: center;';
|
||||
$table->style['copy'] = 'text-align: center;';
|
||||
$table->style['delete'] = 'text-align: center;';
|
||||
$table->size['cells'] = '30px';
|
||||
$table->size['groups'] = '30px';
|
||||
$table->size['favorite'] = '30px';
|
||||
$table->size['copy'] = '30px';
|
||||
$table->size['delete'] = '30px';
|
||||
} else {
|
||||
$table->size['cells'] = '60px';
|
||||
$table->size['groups'] = '60px';
|
||||
$table->size['favorite'] = '60px';
|
||||
}
|
||||
|
||||
$table->data = [];
|
||||
|
||||
if (strlen($filter['free_search']) > 0) {
|
||||
$where = 'WHERE name LIKE "%'.$filter['free_search'].'%"';
|
||||
} else {
|
||||
$where = '';
|
||||
}
|
||||
|
||||
$sql = 'SELECT * FROM tdashboard '.$where.' ORDER BY id '.$pagination;
|
||||
$dashboards = db_get_all_rows_sql($sql);
|
||||
$count = db_get_value_sql('SELECT COUNT(*) FROM tdashboard '.$where);
|
||||
foreach ($dashboards as $dashboard) {
|
||||
$data = [];
|
||||
|
||||
$dataQuery = ['dashboardId' => $dashboard['id']];
|
||||
|
||||
$url = $urlDashboard.'&'.http_build_query($dataQuery);
|
||||
$data['name'] = '<a href="'.$url.'">';
|
||||
$data['name'] .= $dashboard['name'];
|
||||
$data['name'] .= '</a>';
|
||||
|
||||
$data['cells'] = $dashboard['cells'];
|
||||
|
||||
if (empty($dashboard['id_user']) === false) {
|
||||
$data['groups'] = __(
|
||||
'Private for (%s)',
|
||||
$dashboard['id_user']
|
||||
);
|
||||
} else {
|
||||
$data['groups'] = ui_print_group_icon(
|
||||
$dashboard['id_group'],
|
||||
true
|
||||
);
|
||||
}
|
||||
|
||||
$data['favorite'] = $dashboard['active'];
|
||||
|
||||
$dataQueryFull = [
|
||||
'dashboardId' => $dashboard['id'],
|
||||
'pure' => 1,
|
||||
];
|
||||
|
||||
$urlFull = $urlDashboard;
|
||||
$urlFull .= '&'.\http_build_query($dataQueryFull);
|
||||
$data['full_screen'] = '<a href="'.$urlFull.'">';
|
||||
$data['full_screen'] .= \html_print_image(
|
||||
'images/fullscreen@svg.svg',
|
||||
true,
|
||||
['class' => 'main_menu_icon invert_filter']
|
||||
);
|
||||
$data['full_screen'] .= '</a>';
|
||||
|
||||
if ($manageDashboards === 1) {
|
||||
$data['copy'] = '';
|
||||
$data['delete'] = '';
|
||||
}
|
||||
|
||||
if (check_acl_restricted_all($config['id_user'], $dashboard['id_group'], 'RM')) {
|
||||
$dataQueryCopy = [
|
||||
'dashboardId' => $dashboard['id'],
|
||||
'copyDashboard' => 1,
|
||||
];
|
||||
$urlCopy = $urlDashboard.'&'.\http_build_query($dataQueryCopy);
|
||||
$data['copy'] = '<a href="'.$urlCopy.'">';
|
||||
$data['copy'] .= html_print_image('images/copy.svg', true, ['class' => 'main_menu_icon invert_filter']);
|
||||
$data['copy'] .= '</a>';
|
||||
|
||||
$dataQueryDelete = [
|
||||
'dashboardId' => $dashboard['id'],
|
||||
'deleteDashboard' => 1,
|
||||
];
|
||||
$urlDelete = $urlDashboard;
|
||||
$urlDelete .= '&'.\http_build_query($dataQueryDelete);
|
||||
$data['delete'] = '<a href="'.$urlDelete;
|
||||
$data['delete'] .= '" onclick="javascript: if (!confirm(\''.__('Are you sure?').'\')) return false;">';
|
||||
$data['delete'] .= \html_print_image(
|
||||
'images/delete.svg',
|
||||
true,
|
||||
['class' => 'main_menu_icon invert_filter']
|
||||
);
|
||||
$data['delete'] .= '</a>';
|
||||
}
|
||||
|
||||
$table->cellclass[] = [
|
||||
'full_screen' => 'table_action_buttons',
|
||||
'copy' => 'table_action_buttons',
|
||||
'delete' => 'table_action_buttons',
|
||||
];
|
||||
|
||||
$table->data[] = $data;
|
||||
}
|
||||
|
||||
// Datatables format: RecordsTotal && recordsfiltered.
|
||||
echo json_encode(
|
||||
[
|
||||
'data' => $table->data,
|
||||
'recordsTotal' => $count,
|
||||
'recordsFiltered' => $count,
|
||||
]
|
||||
);
|
||||
// Capture output.
|
||||
$response = ob_get_clean();
|
||||
} catch (Exception $e) {
|
||||
echo json_encode(['error' => $e->getMessage()]);
|
||||
exit;
|
||||
}
|
||||
|
||||
// If not valid, show error with issue.
|
||||
json_decode($response);
|
||||
if (json_last_error() == JSON_ERROR_NONE) {
|
||||
// If valid dump.
|
||||
echo $response;
|
||||
} else {
|
||||
echo json_encode(
|
||||
['error' => $response]
|
||||
);
|
||||
}
|
||||
|
||||
exit;
|
||||
}
|
|
@ -20,7 +20,7 @@
|
|||
/**
|
||||
* Pandora build version and version
|
||||
*/
|
||||
$build_version = 'PC231107';
|
||||
$build_version = 'PC231122';
|
||||
$pandora_version = 'v7.0NG.774';
|
||||
|
||||
// Do not overwrite default timezone set if defined.
|
||||
|
|
|
@ -22,7 +22,7 @@ require_once $config['homedir'].'/include/functions_modules.php';
|
|||
require_once $config['homedir'].'/include/functions_users.php';
|
||||
|
||||
|
||||
function alerts_get_alerts($id_group=0, $free_search='', $status='all', $standby=-1, $acl=false, $total=false, $id_agent=0)
|
||||
function alerts_get_alerts($id_group=0, $free_search='', $status='all', $standby=-1, $acl=false, $total=false, $id_agent=0, $only_enabled=false)
|
||||
{
|
||||
$sql = '';
|
||||
$alerts = [];
|
||||
|
@ -121,6 +121,10 @@ function alerts_get_alerts($id_group=0, $free_search='', $status='all', $standby
|
|||
// Only enabled agent.
|
||||
$sql .= ' AND t3.disabled = 0';
|
||||
|
||||
if ($only_enabled === true) {
|
||||
$sql .= ' AND t0.disabled = 0';
|
||||
}
|
||||
|
||||
$row_alerts = db_get_all_rows_sql($sql);
|
||||
|
||||
if ($total) {
|
||||
|
|
|
@ -487,6 +487,10 @@ function config_update_config()
|
|||
$error_update[] = __('Legacy database HA');
|
||||
}
|
||||
|
||||
if (config_update_value('agent_vulnerabilities', get_parameter('agent_vulnerabilities'), true) === false) {
|
||||
$error_update[] = __('agent_vulnerabilities');
|
||||
}
|
||||
|
||||
if (config_update_value('ipam_ocuppied_critical_treshold', get_parameter('ipam_ocuppied_critical_treshold'), true) === false) {
|
||||
$error_update[] = __('Ipam Ocuppied Manager Critical');
|
||||
}
|
||||
|
@ -1568,6 +1572,10 @@ function config_update_config()
|
|||
$error_update[] = __('Use data multiplier');
|
||||
}
|
||||
|
||||
if (config_update_value('disable_general_statistics', get_parameter('disable_general_statistics', 0), true) === false) {
|
||||
$error_update[] = __('Hide general stats for non admin users in tactical view');
|
||||
}
|
||||
|
||||
if (config_update_value('decimal_separator', (string) get_parameter('decimal_separator', '.'), true) === false) {
|
||||
$error_update[] = __('Decimal separator');
|
||||
} else {
|
||||
|
@ -2441,6 +2449,10 @@ function config_process_config()
|
|||
config_update_value('show_experimental_features', 0);
|
||||
}
|
||||
|
||||
if (!isset($config['agent_vulnerabilities'])) {
|
||||
config_update_value('agent_vulnerabilities', 1);
|
||||
}
|
||||
|
||||
if (!isset($config['console_log_enabled'])) {
|
||||
config_update_value('console_log_enabled', 0);
|
||||
}
|
||||
|
@ -3703,6 +3715,10 @@ function config_process_config()
|
|||
config_update_value('use_data_multiplier', '1');
|
||||
}
|
||||
|
||||
if (!isset($config['disable_general_statistics'])) {
|
||||
config_update_value('disable_general_statistics', 0);
|
||||
}
|
||||
|
||||
if (!isset($config['command_snapshot'])) {
|
||||
config_update_value('command_snapshot', 1);
|
||||
}
|
||||
|
|
|
@ -27,6 +27,8 @@
|
|||
* ============================================================================
|
||||
*/
|
||||
|
||||
use Models\VisualConsole\Items\Percentile;
|
||||
|
||||
require_once $config['homedir'].'/include/graphs/fgraph.php';
|
||||
require_once $config['homedir'].'/include/functions_reporting.php';
|
||||
require_once $config['homedir'].'/include/functions_agents.php';
|
||||
|
@ -2686,7 +2688,9 @@ function graph_agent_status(
|
|||
$return=false,
|
||||
$show_not_init=false,
|
||||
$data_agents=false,
|
||||
$donut_narrow_graph=false
|
||||
$donut_narrow_graph=false,
|
||||
$onClick='',
|
||||
$data_in_percentage=false,
|
||||
) {
|
||||
global $config;
|
||||
|
||||
|
@ -2766,6 +2770,25 @@ function graph_agent_status(
|
|||
'labels' => array_keys($data),
|
||||
];
|
||||
|
||||
if (empty($onClick) === false) {
|
||||
$options['onClick'] = $onClick;
|
||||
}
|
||||
|
||||
if ($data_in_percentage === true) {
|
||||
$percentages = [];
|
||||
$total = array_sum($data);
|
||||
foreach ($data as $key => $value) {
|
||||
$percentage = (($value / $total) * 100);
|
||||
if ($percentage < 1 && $percentage > 0) {
|
||||
$percentage = 1;
|
||||
}
|
||||
|
||||
$percentages[$key] = format_numeric($percentage, 0);
|
||||
}
|
||||
|
||||
$data = $percentages;
|
||||
}
|
||||
|
||||
if ($donut_narrow_graph == true) {
|
||||
$out = ring_graph(
|
||||
$data,
|
||||
|
@ -4625,9 +4648,15 @@ function graph_nodata_image($options)
|
|||
return base64_encode($dataImg);
|
||||
}
|
||||
|
||||
$widthImage = '200px';
|
||||
$style = '';
|
||||
if (isset($options['nodata_image']['width']) === true) {
|
||||
$widthImage = $options['nodata_image']['width'];
|
||||
$style .= 'width: '.$options['nodata_image']['width'].'; ';
|
||||
} else {
|
||||
$style .= 'width: 200px; ';
|
||||
}
|
||||
|
||||
if (isset($options['nodata_image']['height']) === true) {
|
||||
$style .= 'height: '.$options['nodata_image']['height'].'; ';
|
||||
}
|
||||
|
||||
return html_print_image(
|
||||
|
@ -4635,7 +4664,7 @@ function graph_nodata_image($options)
|
|||
true,
|
||||
[
|
||||
'title' => __('No data'),
|
||||
'style' => 'width: '.$widthImage.';',
|
||||
'style' => $style,
|
||||
]
|
||||
);
|
||||
}
|
||||
|
|
|
@ -669,6 +669,12 @@ function get_build_setup_charts($type, $options, $data)
|
|||
|
||||
$chart->setId($id);
|
||||
|
||||
if (isset($options['onClick']) === true
|
||||
&& empty($options['onClick']) === false
|
||||
) {
|
||||
$chart->options()->setOnClick($options['onClick']);
|
||||
}
|
||||
|
||||
// Height is null maximum possible.
|
||||
if (isset($options['height']) === true
|
||||
&& empty($options['height']) === false
|
||||
|
@ -1019,6 +1025,7 @@ function get_build_setup_charts($type, $options, $data)
|
|||
$chart->setCircumference($options['circumference']);
|
||||
}
|
||||
|
||||
$stacked = false;
|
||||
if (isset($options['scales']) === true
|
||||
&& empty($options['scales']) === false
|
||||
&& is_array($options['scales']) === true
|
||||
|
@ -1082,6 +1089,13 @@ function get_build_setup_charts($type, $options, $data)
|
|||
}
|
||||
}
|
||||
|
||||
if (isset($options['scales']['x']['stacked']) === true
|
||||
&& empty($options['scales']['x']['stacked']) === false
|
||||
) {
|
||||
$scales->getX()->setStacked($options['scales']['x']['stacked']);
|
||||
$stacked = true;
|
||||
}
|
||||
|
||||
if (isset($options['scales']['x']['ticks']) === true
|
||||
&& empty($options['scales']['x']['ticks']) === false
|
||||
&& is_array($options['scales']['x']['ticks']) === true
|
||||
|
@ -1131,6 +1145,13 @@ function get_build_setup_charts($type, $options, $data)
|
|||
}
|
||||
}
|
||||
|
||||
if (isset($options['scales']['y']['stacked']) === true
|
||||
&& empty($options['scales']['y']['stacked']) === false
|
||||
) {
|
||||
$scales->getY()->setStacked($options['scales']['y']['stacked']);
|
||||
$stacked = true;
|
||||
}
|
||||
|
||||
if (isset($options['scales']['y']['ticks']) === true
|
||||
&& empty($options['scales']['y']['ticks']) === false
|
||||
&& is_array($options['scales']['y']['ticks']) === true
|
||||
|
@ -1247,11 +1268,37 @@ function get_build_setup_charts($type, $options, $data)
|
|||
break;
|
||||
|
||||
case 'BAR':
|
||||
$setData->setLabel('data')->setBackgroundColor($colors);
|
||||
$setData->setLabel('data')->setBorderColor($borders);
|
||||
$setData->setLabel('data')->setBorderWidth(2);
|
||||
|
||||
$setData->setLabel('data')->data()->exchangeArray(array_values($data));
|
||||
if (isset($options['multiple']) === true && empty($options['multiple']) === false) {
|
||||
$i = 0;
|
||||
foreach ($options['multiple'] as $key_label => $label) {
|
||||
$dataSet = $chart->createDataSet();
|
||||
$dataSet->setLabel($label);
|
||||
$dataSet->setBackgroundColor($colors[$i]);
|
||||
$dataSet->setBorderColor($borders[$i]);
|
||||
$dataSet->setBorderWidth(2);
|
||||
$dataSet->data()->exchangeArray(array_values($data[$key_label]));
|
||||
$chart->addDataSet($dataSet);
|
||||
$i++;
|
||||
}
|
||||
} else if ($chart->options()->getScales()->getX()->isStacked() === true) {
|
||||
$i = 0;
|
||||
foreach ($data as $key => $dataset) {
|
||||
$dataSet1 = $chart->createDataSet();
|
||||
$dataSet1->setBackgroundColor($colors[$i]);
|
||||
$dataSet1->setBorderColor($borders[$i]);
|
||||
$dataSet1->setLabel($dataset['label']);
|
||||
$dataSet1->setBorderWidth(2);
|
||||
$dataSet1->data()->exchangeArray($dataset['data']);
|
||||
$dataSet1->setStack($dataset['stack']);
|
||||
$chart->addDataSet($dataSet1);
|
||||
$i++;
|
||||
}
|
||||
} else {
|
||||
$setData->setLabel('data')->setBackgroundColor($colors);
|
||||
$setData->setLabel('data')->setBorderColor($borders);
|
||||
$setData->setLabel('data')->setBorderWidth(2);
|
||||
$setData->setLabel('data')->data()->exchangeArray(array_values($data));
|
||||
}
|
||||
|
||||
// Para las horizontales.
|
||||
if (isset($options['axis']) === true
|
||||
|
@ -1266,6 +1313,7 @@ function get_build_setup_charts($type, $options, $data)
|
|||
foreach ($data as $key => $dataset) {
|
||||
$dataSet1 = $chart->createDataSet();
|
||||
$dataSet1->setBackgroundColor($dataset['backgroundColor']);
|
||||
$dataSet1->setLabel($dataset['label']);
|
||||
$dataSet1->setBorderColor($dataset['borderColor']);
|
||||
$dataSet1->setPointBackgroundColor($dataset['pointBackgroundColor']);
|
||||
$dataSet1->setPointBorderColor($dataset['pointBorderColor']);
|
||||
|
@ -1298,7 +1346,11 @@ function get_build_setup_charts($type, $options, $data)
|
|||
break;
|
||||
}
|
||||
|
||||
if ($type !== 'RADAR' && $type !== 'LINE') {
|
||||
if ($type !== 'RADAR'
|
||||
&& $type !== 'LINE'
|
||||
&& $stacked === false
|
||||
&& (isset($options['multiple']) === false || empty($options['multiple']) === true)
|
||||
) {
|
||||
$chart->addDataSet($setData);
|
||||
}
|
||||
|
||||
|
|
|
@ -73,8 +73,40 @@ $(document).ready(function() {
|
|||
$("#heatmap-title").html($(title).html());
|
||||
}
|
||||
});
|
||||
rescaling();
|
||||
|
||||
$(window).on("resize", function() {
|
||||
rescaling();
|
||||
});
|
||||
});
|
||||
|
||||
function showLabel(element, event, label) {
|
||||
$(".label_heatmap").remove();
|
||||
const tooltip = $(document.createElement("div"));
|
||||
tooltip.html(label);
|
||||
tooltip.attr("class", "label_heatmap");
|
||||
$("#heatmap-group").append(tooltip);
|
||||
var x = event.clientX;
|
||||
var y = event.clientY;
|
||||
tooltip.attr(
|
||||
"style",
|
||||
"position: fixed; top:" + (y + 15) + "px; left:" + (x + 20) + "px;"
|
||||
);
|
||||
}
|
||||
|
||||
function hideLabel() {
|
||||
$(".label_heatmap").remove();
|
||||
}
|
||||
|
||||
function rescaling() {
|
||||
if (window.innerWidth < 1300) {
|
||||
$(".trigger-100").attr("style", "width: 100%;");
|
||||
$(".trigger-100").addClass("br-b");
|
||||
} else {
|
||||
$(".trigger-100").removeAttr("style");
|
||||
$(".trigger-100").removeClass("br-b");
|
||||
}
|
||||
}
|
||||
function autoRefresh(interval, id, method, php_class) {
|
||||
setInterval(() => {
|
||||
$.ajax({
|
||||
|
@ -92,3 +124,114 @@ function autoRefresh(interval, id, method, php_class) {
|
|||
});
|
||||
}, interval);
|
||||
}
|
||||
|
||||
function redirectStatus(e, element) {
|
||||
if (element.length > 0) {
|
||||
switch (e.chart.legend.legendItems[element[0].index].text) {
|
||||
case "Critical":
|
||||
window.location.assign(
|
||||
`index.php?sec=view&sec2=operation/agentes/status_monitor&refr=0&ag_group=0&ag_freestring=&module_option=1&ag_modulename=&moduletype=&datatype=&status=1&sort_field=&sort=none&pure=`
|
||||
);
|
||||
break;
|
||||
|
||||
case "Warning":
|
||||
window.location.assign(
|
||||
`index.php?sec=view&sec2=operation/agentes/status_monitor&refr=0&ag_group=0&ag_freestring=&module_option=1&ag_modulename=&moduletype=&datatype=&status=2&sort_field=&sort=none&pure=`
|
||||
);
|
||||
break;
|
||||
|
||||
case "Unknown":
|
||||
window.location.assign(
|
||||
`index.php?sec=view&sec2=operation/agentes/status_monitor&refr=0&ag_group=0&ag_freestring=&module_option=1&ag_modulename=&moduletype=&datatype=&status=3&sort_field=&sort=none&pure=`
|
||||
);
|
||||
break;
|
||||
|
||||
case "Not init":
|
||||
window.location.assign(
|
||||
`index.php?sec=view&sec2=operation/agentes/status_monitor&refr=0&ag_group=0&ag_freestring=&module_option=1&ag_modulename=&moduletype=&datatype=&status=5&sort_field=&sort=none&pure=`
|
||||
);
|
||||
break;
|
||||
|
||||
case "Normal":
|
||||
window.location.assign(
|
||||
`index.php?sec=view&sec2=operation/agentes/status_monitor&refr=0&ag_group=0&ag_freestring=&module_option=1&ag_modulename=&moduletype=&datatype=&status=0&sort_field=&sort=none&pure=`
|
||||
);
|
||||
break;
|
||||
|
||||
default:
|
||||
window.location.assign(
|
||||
`index.php?sec=view&sec2=operation/agentes/status_monitor&refr=0&ag_group=0&ag_freestring=&module_option=1&ag_modulename=&moduletype=&datatype=&status=-1&sort_field=&sort=none&pure=`
|
||||
);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function redirectHeatmap(view, id, id_agente = 0) {
|
||||
switch (view) {
|
||||
case "group":
|
||||
window.location.assign(
|
||||
`index.php?sec=view&sec2=godmode/groups/tactical&id_group=${id}`
|
||||
);
|
||||
break;
|
||||
|
||||
case "agent":
|
||||
window.location.assign(
|
||||
`index.php?sec=estado&sec2=operation/agentes/ver_agente&id_agente=${id}`
|
||||
);
|
||||
break;
|
||||
|
||||
case "module":
|
||||
if (id_agente > 0) {
|
||||
window.location.assign(
|
||||
`index.php?sec=gagente&sec2=godmode/agentes/configurar_agente&id_agente=${id_agente}&tab=module&id_agent_module=${id}&edit_module=1`
|
||||
);
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
function redirectAgentStatus(e, element) {
|
||||
if (element.length > 0) {
|
||||
switch (e.chart.legend.legendItems[element[0].index].text) {
|
||||
case "No monitors":
|
||||
window.location.assign(
|
||||
`index.php?sec=view&sec2=operation/agentes/estado_agente`
|
||||
);
|
||||
break;
|
||||
|
||||
case "CRITICAL":
|
||||
window.location.assign(
|
||||
`index.php?sec=view&sec2=operation/agentes/estado_agente&status=1`
|
||||
);
|
||||
break;
|
||||
|
||||
case "WARNING":
|
||||
window.location.assign(
|
||||
`index.php?sec=view&sec2=operation/agentes/estado_agente&status=2`
|
||||
);
|
||||
break;
|
||||
|
||||
case "UKNOWN":
|
||||
window.location.assign(
|
||||
`index.php?sec=view&sec2=operation/agentes/estado_agente&status=3`
|
||||
);
|
||||
break;
|
||||
|
||||
case "NORMAL":
|
||||
window.location.assign(
|
||||
`index.php?sec=view&sec2=operation/agentes/estado_agente&status=0`
|
||||
);
|
||||
break;
|
||||
|
||||
default:
|
||||
window.location.assign(
|
||||
`index.php?sec=view&sec2=operation/agentes/estado_agente`
|
||||
);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1461,7 +1461,8 @@ function defineTinyMCE(selector) {
|
|||
{ text: "C#", value: "csharp" },
|
||||
{ text: "C++", value: "cpp" }
|
||||
],
|
||||
toolbar: defaultToolbar
|
||||
toolbar: defaultToolbar,
|
||||
relative_urls: false
|
||||
});
|
||||
}
|
||||
|
||||
|
|
|
@ -731,7 +731,8 @@ class Manager implements PublicLogin
|
|||
int $limit=-1,
|
||||
bool $favourite=false,
|
||||
bool $slideshow=false,
|
||||
string $id_user=''
|
||||
string $id_user='',
|
||||
array $rowFilter=[]
|
||||
):array {
|
||||
global $config;
|
||||
|
||||
|
@ -749,6 +750,14 @@ class Manager implements PublicLogin
|
|||
$sql_where .= 'AND td.cells_slideshow = 1';
|
||||
}
|
||||
|
||||
if (empty((int) $rowFilter['id_group']) === false) {
|
||||
$sql_where .= ' AND td.id_group = '.$rowFilter['id_group'];
|
||||
}
|
||||
|
||||
if (empty($rowFilter['name_filter']) === false) {
|
||||
$sql_where .= ' AND td.name like "%'.$rowFilter['name_filter'].'%"';
|
||||
}
|
||||
|
||||
if (empty($id_user) === true) {
|
||||
$id_user = $config['id_user'];
|
||||
}
|
||||
|
@ -944,6 +953,13 @@ class Manager implements PublicLogin
|
|||
private function showList()
|
||||
{
|
||||
global $config;
|
||||
$id_group_filter = \get_parameter_post('id_group', '');
|
||||
$name_filter = \get_parameter_post('name', '');
|
||||
|
||||
$rowFilter = [
|
||||
'id_group' => $id_group_filter,
|
||||
'name_filter' => $name_filter,
|
||||
];
|
||||
|
||||
$limit_sql = $config['block_size'];
|
||||
|
||||
|
@ -957,7 +973,7 @@ class Manager implements PublicLogin
|
|||
$resultCopy = $this->copy();
|
||||
}
|
||||
|
||||
$dashboards = $this->getDashboards($this->offset, $limit_sql);
|
||||
$dashboards = $this->getDashboards($this->offset, $limit_sql, false, false, '', $rowFilter);
|
||||
$count = $this->getDashboardsCount();
|
||||
|
||||
View::render(
|
||||
|
|
|
@ -134,6 +134,9 @@ class SecurityHardening extends Widget
|
|||
|
||||
// Includes.
|
||||
include_once ENTERPRISE_DIR.'/include/functions_security_hardening.php';
|
||||
include_once $config['homedir'].'/include/graphs/fgraph.php';
|
||||
include_once $config['homedir'].'/include/functions_graph.php';
|
||||
|
||||
// WARNING: Do not edit. This chunk must be in the constructor.
|
||||
parent::__construct(
|
||||
$cellId,
|
||||
|
@ -1092,7 +1095,6 @@ class SecurityHardening extends Widget
|
|||
function selectData(e){
|
||||
$(".row_input").hide();
|
||||
dataTypes_'.$id.'[e.value].forEach(element => {
|
||||
console.log(element);
|
||||
$(element).show();
|
||||
});
|
||||
}
|
||||
|
|
|
@ -79,11 +79,17 @@ class Element
|
|||
public function __construct(
|
||||
$ajax_controller='include/ajax/general_tactical_view.ajax'
|
||||
) {
|
||||
global $config;
|
||||
$this->interval = 0;
|
||||
$this->title = __('Default element');
|
||||
$this->ajaxController = $ajax_controller;
|
||||
// Without ACL.
|
||||
$agent = db_get_row('tagente', 'nombre', 'pandora.internals', '*');
|
||||
$agent_name = $config['self_monitoring_agent_name'];
|
||||
if (empty($agent_name) === true) {
|
||||
$agent_name = 'pandora.internals';
|
||||
}
|
||||
|
||||
$agent = db_get_row('tagente', 'nombre', $agent_name, '*');
|
||||
if (is_array($agent) === true) {
|
||||
$this->monitoringAgent = $agent;
|
||||
}
|
||||
|
|
|
@ -50,6 +50,22 @@ class GeneralTacticalView
|
|||
}
|
||||
|
||||
|
||||
/**
|
||||
* Returns whether general statistics are disabled.
|
||||
*
|
||||
* @return boolean
|
||||
*/
|
||||
public function disableGeneralStatistics():bool
|
||||
{
|
||||
global $config;
|
||||
if (users_is_admin($config['id_user']) === true) {
|
||||
return false;
|
||||
} else {
|
||||
return (bool) $config['disable_general_statistics'];
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Instantiate all the elements that will build the dashboard
|
||||
*
|
||||
|
@ -109,6 +125,7 @@ class GeneralTacticalView
|
|||
{
|
||||
$data = [];
|
||||
$data['javascript'] = $this->javascript();
|
||||
$data['disableGeneralStatistics'] = $this->disableGeneralStatistics();
|
||||
$data = array_merge($data, $this->elements);
|
||||
View::render(
|
||||
'tacticalView/view',
|
||||
|
|
|
@ -429,12 +429,29 @@ class Agents extends Element
|
|||
'cutout' => 80,
|
||||
'nodata_image' => ['width' => '80%'],
|
||||
'colors' => $colors,
|
||||
'onClick' => 'redirectAgentStatus',
|
||||
];
|
||||
|
||||
// To avoid that if a value is too small it is not seen.
|
||||
$percentages = [];
|
||||
$total = array_sum($data);
|
||||
foreach ($data as $key => $value) {
|
||||
$percentage = (($value / $total) * 100);
|
||||
if ($percentage < 1 && $percentage > 0) {
|
||||
$percentage = 1;
|
||||
}
|
||||
|
||||
$percentages[$key] = format_numeric($percentage, 0);
|
||||
}
|
||||
|
||||
$data = $percentages;
|
||||
|
||||
$pie = ring_graph($data, $options);
|
||||
$output = html_print_div(
|
||||
[
|
||||
'content' => $pie,
|
||||
'style' => 'margin: 0 auto; max-width: 80%; max-height: 220px;',
|
||||
'class' => 'clickable',
|
||||
],
|
||||
true
|
||||
);
|
||||
|
|
|
@ -83,7 +83,7 @@ class Alerts extends Element
|
|||
*/
|
||||
public function getActiveAlerts():string
|
||||
{
|
||||
$total = alerts_get_alerts(0, '', 'all', -1, 'AR', true);
|
||||
$total = alerts_get_alerts(0, '', 'all', -1, 'AR', true, 0, true);
|
||||
return html_print_div(
|
||||
[
|
||||
'content' => format_numeric($total, 0),
|
||||
|
|
|
@ -34,7 +34,9 @@ class Database extends Element
|
|||
*/
|
||||
public function __construct()
|
||||
{
|
||||
global $config;
|
||||
parent::__construct();
|
||||
include_once $config['homedir'].'/include/graphs/fgraph.php';
|
||||
$this->title = __('Database');
|
||||
$this->ajaxMethods = [
|
||||
'getStatus',
|
||||
|
|
|
@ -57,23 +57,13 @@ class Events extends Element
|
|||
{
|
||||
global $config;
|
||||
$id_groups = array_keys(users_get_groups($config['id_user'], 'AR', false));
|
||||
if (in_array(0, $id_groups) === false) {
|
||||
foreach ($id_groups as $key => $id_group) {
|
||||
if ((bool) check_acl_restricted_all($config['id_user'], $id_group, 'AR') === false) {
|
||||
unset($id_groups[$key]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (users_can_manage_group_all() === true) {
|
||||
$id_groups[] = 0;
|
||||
}
|
||||
|
||||
$id_groups = implode(',', $id_groups);
|
||||
$event_view_h = (int) ($config['event_view_hr'] > 24) ? 24 : $config['event_view_hr'];
|
||||
$time_events = ($event_view_h * 3600);
|
||||
$intervalh = (time() - $time_events);
|
||||
$sql = 'SELECT utimestamp from tevento WHERE utimestamp >= '.$intervalh.' ORDER BY utimestamp DESC;';
|
||||
$sql = 'SELECT utimestamp
|
||||
FROM tevento
|
||||
WHERE utimestamp >= '.$intervalh.' AND id_grupo IN ('.$id_groups.') ORDER BY utimestamp DESC;';
|
||||
$rows = db_process_sql($sql);
|
||||
$cut_seconds = ($time_events / 24);
|
||||
$now = (time() - 300);
|
||||
|
@ -377,6 +367,13 @@ class Events extends Element
|
|||
$data = [];
|
||||
$colors = [];
|
||||
foreach ($rows as $key => $row) {
|
||||
if ($row['criticity'] != EVENT_CRIT_CRITICAL
|
||||
&& $row['criticity'] != EVENT_CRIT_NORMAL
|
||||
&& $row['criticity'] != EVENT_CRIT_WARNING
|
||||
) {
|
||||
continue;
|
||||
}
|
||||
|
||||
switch ($row['criticity']) {
|
||||
case EVENT_CRIT_CRITICAL:
|
||||
$label = __('CRITICAL');
|
||||
|
@ -394,9 +391,7 @@ class Events extends Element
|
|||
break;
|
||||
|
||||
default:
|
||||
$colors[] = COL_UNKNOWN;
|
||||
$label = __('UNKNOWN');
|
||||
break;
|
||||
continue;
|
||||
}
|
||||
|
||||
$labels[] = $this->controlSizeText($label);
|
||||
|
@ -410,6 +405,21 @@ class Events extends Element
|
|||
'nodata_image' => ['width' => '100%'],
|
||||
'colors' => $colors,
|
||||
];
|
||||
|
||||
// To avoid that if a value is too small it is not seen.
|
||||
$percentages = [];
|
||||
$total = array_sum($data);
|
||||
foreach ($data as $key => $value) {
|
||||
$percentage = (($value / $total) * 100);
|
||||
if ($percentage < 1 && $percentage > 0) {
|
||||
$percentage = 1;
|
||||
}
|
||||
|
||||
$percentages[$key] = format_numeric($percentage, 0);
|
||||
}
|
||||
|
||||
$data = $percentages;
|
||||
|
||||
$pie = ring_graph($data, $options);
|
||||
$output = html_print_div(
|
||||
[
|
||||
|
@ -448,9 +458,10 @@ class Events extends Element
|
|||
'style' => 'width: 90%;',
|
||||
'ajax_url' => 'operation/events/events',
|
||||
'ajax_data' => [
|
||||
'get_events' => 1,
|
||||
'compact_date' => 1,
|
||||
'external_url' => 1,
|
||||
'get_events' => 1,
|
||||
'compact_date' => 1,
|
||||
'external_url' => 1,
|
||||
'compact_name_event' => 1,
|
||||
],
|
||||
'order' => [
|
||||
'field' => 'timestamp',
|
||||
|
|
|
@ -118,7 +118,6 @@ class Groups extends Element
|
|||
return graph_nodata_image(['width' => '400']);
|
||||
}
|
||||
|
||||
$groups = $modules;
|
||||
// Best square.
|
||||
$high = (float) max($width, $height);
|
||||
$low = 0.0;
|
||||
|
@ -147,13 +146,18 @@ class Groups extends Element
|
|||
$x = 0;
|
||||
$y = 0;
|
||||
$cont = 1;
|
||||
foreach ($groups as $key => $value) {
|
||||
foreach ($modules as $key => $value) {
|
||||
$module_id = $value['id_agente_modulo'];
|
||||
$db_status = modules_get_agentmodule_status($module_id);
|
||||
$module_status = db_get_row(
|
||||
'tagente_estado',
|
||||
'id_agente_modulo',
|
||||
$module_id,
|
||||
);
|
||||
|
||||
$module_value = modules_get_last_value($module_id);
|
||||
$status = '';
|
||||
$title = '';
|
||||
modules_get_status($module_id, $db_status, $module_value, $status, $title);
|
||||
modules_get_status($module_id, $module_status['estado'], $module_value, $status, $title);
|
||||
switch ($status) {
|
||||
case STATUS_MODULE_NO_DATA:
|
||||
// Not init status.
|
||||
|
@ -183,10 +187,16 @@ class Groups extends Element
|
|||
break;
|
||||
}
|
||||
|
||||
$redirect = '';
|
||||
if (check_acl($config['id_user'], 0, 'AW')) {
|
||||
$redirect = 'onclick="redirectHeatmap(\'module\', '.$module_id.', '.$value['id_agente'].')"';
|
||||
}
|
||||
|
||||
$heatmap .= sprintf(
|
||||
'<rect id="%s" x="%s" style="stroke-width:1;stroke:#ffffff" y="%s" row="%s" rx="3" ry="3" col="%s" width="%s" height="%s" class="scuare-status %s_%s"></rect>',
|
||||
'<rect id="%s" x="%s" onmousemove="showLabel(this, event, \'%s\')" onmouseleave="hideLabel()" '.$redirect.' style="stroke-width:1;stroke:#ffffff" y="%s" row="%s" rx="3" ry="3" col="%s" width="%s" height="%s" class="scuare-status %s_%s"></rect>',
|
||||
'rect_'.$cont,
|
||||
$x,
|
||||
$value['nombre'],
|
||||
$y,
|
||||
$row,
|
||||
$column,
|
||||
|
@ -350,9 +360,10 @@ class Groups extends Element
|
|||
}
|
||||
|
||||
$heatmap .= sprintf(
|
||||
'<rect id="%s" x="%s" style="stroke-width:1;stroke:#ffffff" y="%s" row="%s" rx="3" ry="3" col="%s" width="%s" height="%s" class="scuare-status %s_%s"></rect>',
|
||||
'<rect id="%s" x="%s" onmousemove="showLabel(this, event, \'%s\')" onmouseleave="hideLabel()" onclick="redirectHeatmap(\'agent\', '.$value['id_agente'].')" style="stroke-width:1;stroke:#ffffff" y="%s" row="%s" rx="3" ry="3" col="%s" width="%s" height="%s" class="scuare-status %s_%s"></rect>',
|
||||
'rect_'.$cont,
|
||||
$x,
|
||||
$value['alias'],
|
||||
$y,
|
||||
$row,
|
||||
$column,
|
||||
|
@ -490,9 +501,10 @@ class Groups extends Element
|
|||
}
|
||||
|
||||
$heatmap .= sprintf(
|
||||
'<rect id="%s" x="%s" style="stroke-width:1;stroke:#ffffff" y="%s" row="%s" rx="3" ry="3" col="%s" width="%s" height="%s" class="scuare-status %s_%s"></rect>',
|
||||
'<rect id="%s" x="%s" onmousemove="showLabel(this, event, \'%s\')" onmouseleave="hideLabel()" onclick="redirectHeatmap(\'group\', '.$value['_id_'].')" style="stroke-width:1;stroke:#ffffff" y="%s" row="%s" rx="3" ry="3" col="%s" width="%s" height="%s" class="scuare-status %s_%s"></rect>',
|
||||
'rect_'.$cont,
|
||||
$x,
|
||||
$value['_name_'],
|
||||
$y,
|
||||
$row,
|
||||
$column,
|
||||
|
|
|
@ -75,7 +75,10 @@ class MonitoringElements extends Element
|
|||
'display' => false,
|
||||
],
|
||||
'cutout' => 80,
|
||||
'nodata_image' => ['width' => '100%'],
|
||||
'nodata_image' => [
|
||||
'width' => '100%',
|
||||
'height' => '90%',
|
||||
],
|
||||
];
|
||||
$pie = ring_graph($data, $options);
|
||||
$output = html_print_div(
|
||||
|
@ -139,7 +142,10 @@ class MonitoringElements extends Element
|
|||
'display' => false,
|
||||
],
|
||||
'cutout' => 80,
|
||||
'nodata_image' => ['width' => '100%'],
|
||||
'nodata_image' => [
|
||||
'width' => '100%',
|
||||
'height' => '90%',
|
||||
],
|
||||
];
|
||||
$pie = ring_graph($data, $options);
|
||||
$output = html_print_div(
|
||||
|
@ -208,7 +214,10 @@ class MonitoringElements extends Element
|
|||
'display' => false,
|
||||
],
|
||||
'cutout' => 80,
|
||||
'nodata_image' => ['width' => '100%'],
|
||||
'nodata_image' => [
|
||||
'width' => '100%',
|
||||
'height' => '90%',
|
||||
],
|
||||
];
|
||||
$pie = ring_graph($data, $options);
|
||||
$output = html_print_div(
|
||||
|
@ -230,11 +239,12 @@ class MonitoringElements extends Element
|
|||
*/
|
||||
public function getMonitoringStatusGraph():string
|
||||
{
|
||||
$pie = graph_agent_status(false, '', '', true, true, false, true);
|
||||
$pie = graph_agent_status(false, '', '', true, true, false, true, 'redirectStatus', true);
|
||||
$output = html_print_div(
|
||||
[
|
||||
'content' => $pie,
|
||||
'style' => 'margin: 0 auto; max-width: 80%; max-height: 220px;',
|
||||
'class' => 'clickable',
|
||||
],
|
||||
true
|
||||
);
|
||||
|
|
|
@ -36,6 +36,7 @@ class Overview extends Element
|
|||
{
|
||||
global $config;
|
||||
parent::__construct();
|
||||
include_once $config['homedir'].'/include/graphs/fgraph.php';
|
||||
if (is_ajax() === true) {
|
||||
include_once $config['homedir'].'/include/functions_servers.php';
|
||||
}
|
||||
|
@ -163,6 +164,9 @@ class Overview extends Element
|
|||
if ($info['limit'] > $info['count']) {
|
||||
$used = round(($info['count'] / $info['limit']) * 100);
|
||||
$free = (100 - $used);
|
||||
} else if ($info['limit'] <= $info['count']) {
|
||||
$free = 0;
|
||||
$used = 100;
|
||||
} else {
|
||||
$free = 100;
|
||||
$used = 0;
|
||||
|
|
|
@ -23,11 +23,12 @@
|
|||
align-items: stretch;
|
||||
}
|
||||
.col-12 {
|
||||
width: 100%;
|
||||
width: 99%;
|
||||
}
|
||||
.col-6,
|
||||
.col-xl-6 {
|
||||
width: 50%;
|
||||
flex: 1;
|
||||
display: flex;
|
||||
flex-wrap: nowrap;
|
||||
flex-direction: column;
|
||||
|
@ -58,6 +59,9 @@
|
|||
border-radius: 10px;
|
||||
height: 100%;
|
||||
max-width: 100%;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
justify-content: flex-start;
|
||||
}
|
||||
.br-l {
|
||||
border-left: 1px solid #e5e9ed;
|
||||
|
@ -325,6 +329,22 @@ table.dataTable thead th {
|
|||
background-color: #ec7176;
|
||||
}
|
||||
|
||||
#svg rect {
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.trigger-100 {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
}
|
||||
.label_heatmap {
|
||||
position: absolute;
|
||||
background-color: #757575;
|
||||
color: white;
|
||||
padding: 2px 5px;
|
||||
border-radius: 5px;
|
||||
}
|
||||
|
||||
@media (max-width: 1636px) {
|
||||
.col-xl-6 {
|
||||
width: 100%;
|
||||
|
@ -344,9 +364,7 @@ table.dataTable thead th {
|
|||
.col-7 {
|
||||
width: 56%;
|
||||
}
|
||||
.col-5 {
|
||||
width: 41%;
|
||||
}
|
||||
|
||||
.flex-nowrap {
|
||||
flex-wrap: nowrap !important;
|
||||
}
|
||||
|
|
|
@ -10328,7 +10328,7 @@ select:focus {
|
|||
}
|
||||
|
||||
.dataTables_length > label {
|
||||
color: #fff;
|
||||
color: #000;
|
||||
}
|
||||
|
||||
input[type="button"],
|
||||
|
@ -12741,12 +12741,6 @@ div.agents_custom_fields #datatables_wrapper div.bottom {
|
|||
justify-content: flex-start !important;
|
||||
}
|
||||
|
||||
.dt-buttons {
|
||||
width: auto;
|
||||
position: absolute;
|
||||
margin-left: 90px;
|
||||
}
|
||||
|
||||
.title_tactical {
|
||||
padding: 10px 0px 10px 0px;
|
||||
text-align: center;
|
||||
|
|
|
@ -369,8 +369,6 @@ a.pandora_pagination.current:hover {
|
|||
font-size: 20px;
|
||||
height: 38px;
|
||||
width: 80px;
|
||||
margin-left: 90px;
|
||||
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
flex-direction: row;
|
||||
|
|
|
@ -0,0 +1,160 @@
|
|||
.details_table b {
|
||||
font-size: 12px;
|
||||
}
|
||||
.details_table {
|
||||
width: 99% !important;
|
||||
}
|
||||
|
||||
.dataTables_length {
|
||||
margin: 10px 0px 20px 20px;
|
||||
}
|
||||
|
||||
.custom-filter {
|
||||
width: 95%;
|
||||
margin: 21px auto;
|
||||
}
|
||||
|
||||
.custom-filter label {
|
||||
font-size: 13px !important;
|
||||
margin-right: 10px;
|
||||
}
|
||||
|
||||
.dataTables_paginate.paging_simple_numbers {
|
||||
margin: 10px 20px 20px 0px;
|
||||
margin-right: 20px !important;
|
||||
}
|
||||
|
||||
.row-graphs {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
flex-direction: row;
|
||||
justify-content: center;
|
||||
max-width: 90%;
|
||||
margin: 0 auto;
|
||||
}
|
||||
|
||||
.col-md-3 {
|
||||
width: 30%;
|
||||
margin: 10px;
|
||||
}
|
||||
|
||||
.col-md-6 {
|
||||
width: 35%;
|
||||
margin: 10px;
|
||||
}
|
||||
|
||||
.col-md-1 {
|
||||
width: 15%;
|
||||
margin: 10px;
|
||||
}
|
||||
|
||||
.col-md-2 {
|
||||
width: 30%;
|
||||
margin: 10px;
|
||||
}
|
||||
|
||||
.col-md-7 {
|
||||
width: 40%;
|
||||
margin: 10px;
|
||||
}
|
||||
|
||||
.col-md-9 {
|
||||
width: 63%;
|
||||
margin: 10px;
|
||||
}
|
||||
|
||||
.pdd_b_40px {
|
||||
padding-bottom: 40px !important;
|
||||
}
|
||||
#reach-metrics {
|
||||
margin-bottom: 45px;
|
||||
}
|
||||
|
||||
#reach-metrics .row-graphs {
|
||||
max-width: 100%;
|
||||
}
|
||||
|
||||
#score-bar {
|
||||
max-width: 85%;
|
||||
margin: 0 auto;
|
||||
}
|
||||
#bar {
|
||||
height: 100%;
|
||||
animation: load 2s;
|
||||
}
|
||||
.marks {
|
||||
color: #9f9f9f;
|
||||
}
|
||||
.title {
|
||||
font-size: 19px;
|
||||
font-weight: 600;
|
||||
color: #3f3f3f;
|
||||
}
|
||||
.score {
|
||||
font-weight: 700;
|
||||
font-size: 24px;
|
||||
color: #3f3f3f;
|
||||
}
|
||||
.message {
|
||||
color: #0000008c;
|
||||
}
|
||||
.status {
|
||||
font-size: 15px;
|
||||
margin-left: 20px;
|
||||
}
|
||||
.marks {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
}
|
||||
.labels-bar {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
padding: 0px 8px;
|
||||
}
|
||||
.date {
|
||||
font-weight: 400;
|
||||
color: #0000008c;
|
||||
margin-left: 13px;
|
||||
}
|
||||
.dt-buttons {
|
||||
display: flex;
|
||||
margin: 10px;
|
||||
margin-left: 0px;
|
||||
position: relative;
|
||||
}
|
||||
.dt-buttons button {
|
||||
margin-left: 0px !important;
|
||||
}
|
||||
#content-bar {
|
||||
border: 1px solid #d7d7d7;
|
||||
width: 100%;
|
||||
height: 30px;
|
||||
border-radius: 5px;
|
||||
}
|
||||
|
||||
@media (max-width: 1500px) {
|
||||
.col-md-3 {
|
||||
width: 40%;
|
||||
}
|
||||
.col-md-1 {
|
||||
width: 20%;
|
||||
}
|
||||
.col-md-2 {
|
||||
width: 45%;
|
||||
}
|
||||
.col-md-6 {
|
||||
width: 88%;
|
||||
}
|
||||
.col-md-7 {
|
||||
width: 80%;
|
||||
}
|
||||
}
|
||||
|
||||
@keyframes load {
|
||||
from {
|
||||
width: 0%;
|
||||
}
|
||||
to {
|
||||
width: 100%;
|
||||
}
|
||||
}
|
|
@ -1057,6 +1057,7 @@ if ((bool) ($config['maintenance_mode'] ?? false) === true
|
|||
|
||||
if ((bool) ($config['maintenance_mode'] ?? false) === true
|
||||
&& $page !== 'advanced/command_center'
|
||||
&& $page !== 'godmode/update_manager/update_manager'
|
||||
&& is_user_admin($config['id_user']) === true
|
||||
) {
|
||||
// Prevent access to metaconsole if not merged.
|
||||
|
|
|
@ -131,7 +131,7 @@
|
|||
<div style='padding-bottom: 50px'>
|
||||
<?php
|
||||
$version = '7.0NG.774';
|
||||
$build = '231107';
|
||||
$build = '231122';
|
||||
$banner = "v$version Build $build";
|
||||
error_reporting(0);
|
||||
|
||||
|
|
|
@ -56,8 +56,18 @@ function validateAlert($ids)
|
|||
}
|
||||
|
||||
|
||||
function printFormFilterAlert($id_group, $filter, $free_search, $url, $filter_standby=false, $tag_filter=false, $action_filter=false, $return=false, $strict_user=false, $access='AR')
|
||||
{
|
||||
function printFormFilterAlert(
|
||||
$id_group,
|
||||
$filter,
|
||||
$free_search,
|
||||
$alert_agent_view,
|
||||
$filter_standby=false,
|
||||
$tag_filter=false,
|
||||
$action_filter=false,
|
||||
$return=false,
|
||||
$strict_user=false,
|
||||
$access='AR'
|
||||
) {
|
||||
global $config;
|
||||
include_once $config['homedir'].'/include/functions_tags.php';
|
||||
|
||||
|
@ -69,29 +79,32 @@ function printFormFilterAlert($id_group, $filter, $free_search, $url, $filter_st
|
|||
$table->size[1] = '33%';
|
||||
$table->size[2] = '33%';
|
||||
$table->data = [];
|
||||
$table->data[0][0] = html_print_label_input_block(
|
||||
__('Group'),
|
||||
html_print_select_groups(
|
||||
$config['id_user'],
|
||||
$access,
|
||||
true,
|
||||
'ag_group',
|
||||
$id_group,
|
||||
'',
|
||||
'',
|
||||
'',
|
||||
true,
|
||||
false,
|
||||
false,
|
||||
'',
|
||||
false,
|
||||
'',
|
||||
false,
|
||||
false,
|
||||
'id_grupo',
|
||||
$strict_user
|
||||
)
|
||||
);
|
||||
|
||||
if ($alert_agent_view === false) {
|
||||
$table->data[0][0] = html_print_label_input_block(
|
||||
__('Group'),
|
||||
html_print_select_groups(
|
||||
$config['id_user'],
|
||||
$access,
|
||||
true,
|
||||
'ag_group',
|
||||
$id_group,
|
||||
'',
|
||||
'',
|
||||
'',
|
||||
true,
|
||||
false,
|
||||
false,
|
||||
'',
|
||||
false,
|
||||
'',
|
||||
false,
|
||||
false,
|
||||
'id_grupo',
|
||||
$strict_user
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
$alert_status_filter = [];
|
||||
$alert_status_filter['all_enabled'] = __('All (Enabled)');
|
||||
|
@ -200,45 +213,3 @@ function printFormFilterAlert($id_group, $filter, $free_search, $url, $filter_st
|
|||
echo $data;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
function printFormFilterAlertAgent($agent_view_page, $free_search, $id_agent, $return=false)
|
||||
{
|
||||
$table_filter = new stdClass();
|
||||
$table_filter->width = '100%';
|
||||
|
||||
if ($agent_view_page === true) {
|
||||
$table_filter->class = 'info_table';
|
||||
$table_filter->styleTable = 'border-radius: 0;padding: 0;margin: 0;';
|
||||
$free_search_name = 'free_search_alert';
|
||||
} else {
|
||||
$table_filter->class = 'databox filters';
|
||||
$free_search_name = 'free_search';
|
||||
}
|
||||
|
||||
$table_filter->style = [];
|
||||
$table_filter->style[0] = 'font-weight: bold';
|
||||
$table_filter->data = [];
|
||||
|
||||
$table_filter->data[0][0] = __('Free text for search (*):').ui_print_help_tip(
|
||||
__('Filter by module name, template name or action name'),
|
||||
true
|
||||
);
|
||||
|
||||
$table_filter->data[0][0] .= '<span class="mrgn_lft_10px">'.html_print_input_text(
|
||||
$free_search_name,
|
||||
$free_search,
|
||||
'',
|
||||
20,
|
||||
100,
|
||||
true
|
||||
).'</span>';
|
||||
|
||||
$form = html_print_table($table_filter, true);
|
||||
|
||||
if ($return === true) {
|
||||
return $form;
|
||||
} else {
|
||||
echo $form;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -405,6 +405,12 @@ if ($agent_view_page === true) {
|
|||
]
|
||||
);
|
||||
} else {
|
||||
$tab = get_parameter('tab', 'main');
|
||||
$alert_agent_view = false;
|
||||
if ($tab == 'alert') {
|
||||
$alert_agent_view = true;
|
||||
}
|
||||
|
||||
ui_print_datatable(
|
||||
[
|
||||
'id' => 'alerts_status_datatable',
|
||||
|
@ -433,7 +439,7 @@ if ($agent_view_page === true) {
|
|||
$id_group,
|
||||
$disabled,
|
||||
$free_search,
|
||||
$url,
|
||||
$alert_agent_view,
|
||||
$filter_standby,
|
||||
$tag_filter,
|
||||
true,
|
||||
|
@ -441,7 +447,7 @@ if ($agent_view_page === true) {
|
|||
$strict_user
|
||||
),
|
||||
],
|
||||
'start_disabled' => true,
|
||||
'start_disabled' => !$alert_agent_view,
|
||||
]
|
||||
);
|
||||
}
|
||||
|
|
|
@ -96,7 +96,7 @@ if (!empty($table->data)) {
|
|||
// Create controlled toggle content.
|
||||
ui_toggle(
|
||||
$html_content,
|
||||
__('Log sources status'),
|
||||
__('Log sources status (last 24h)'),
|
||||
'log_sources_status',
|
||||
!$log_sources_defined,
|
||||
false,
|
||||
|
|
|
@ -45,6 +45,7 @@ ui_require_css_file('agent_view');
|
|||
|
||||
enterprise_include_once('operation/agentes/ver_agente.php');
|
||||
enterprise_include_once('include/functions_security_hardening.php');
|
||||
enterprise_include_once('include/functions_vulnerabilities.php');
|
||||
|
||||
check_login();
|
||||
if (is_ajax()) {
|
||||
|
@ -1858,7 +1859,6 @@ $external_tools['text'] = html_print_menu_button(
|
|||
$external_tools['active'] = ($tab === 'external_tools');
|
||||
|
||||
if (enterprise_installed() === true && security_hardening_installed() === true) {
|
||||
// External Tools tab.
|
||||
$security_hardening['text'] = html_print_menu_button(
|
||||
[
|
||||
'href' => 'index.php?sec=estado&sec2=operation/agentes/ver_agente&tab=security_hardening&id_agente='.$id_agente,
|
||||
|
@ -1871,6 +1871,26 @@ if (enterprise_installed() === true && security_hardening_installed() === true)
|
|||
$security_hardening['active'] = ($tab === 'security_hardening');
|
||||
}
|
||||
|
||||
if (function_exists('vulnerabilities_last_scan_agent') === true) {
|
||||
if (enterprise_installed() === true
|
||||
&& (int) $agent['vul_scan_enabled'] !== 0
|
||||
&& ((int) $agent['vul_scan_enabled'] === 1 || (int) $config['agent_vulnerabilities'] === 1)
|
||||
&& vulnerabilities_last_scan_agent($id_agente) !== 0
|
||||
) {
|
||||
$vulnerabilities['text'] = html_print_menu_button(
|
||||
[
|
||||
'href' => 'index.php?sec=estado&sec2=operation/agentes/ver_agente&tab=vulnerabilities&id_agente='.$id_agente,
|
||||
'image' => 'images/vulnerability_scan@svg.svg',
|
||||
'title' => __('Vulnerabilities'),
|
||||
],
|
||||
true
|
||||
);
|
||||
|
||||
$vulnerabilities['active'] = ($tab === 'vulnerabilities');
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
$onheader = [
|
||||
'manage' => ($managetab ?? null),
|
||||
'main' => ($maintab ?? null),
|
||||
|
@ -1889,6 +1909,7 @@ $onheader = [
|
|||
'ncm_view' => ($ncm_tab ?? null),
|
||||
'external_tools' => ($external_tools ?? null),
|
||||
'security_hardening' => ($security_hardening ?? null),
|
||||
'vulnerabilities' => ($vulnerabilities ?? null),
|
||||
'incident' => ($incidenttab ?? null),
|
||||
'omnishell' => ($omnishellTab ?? null),
|
||||
];
|
||||
|
@ -2073,6 +2094,10 @@ switch ($tab) {
|
|||
$tab_name = __('Security hardening');
|
||||
break;
|
||||
|
||||
case 'vulnerabilities':
|
||||
$tab_name = __('Vulnerabilities');
|
||||
break;
|
||||
|
||||
default:
|
||||
$tab_name = '';
|
||||
$help_header = '';
|
||||
|
@ -2222,6 +2247,10 @@ switch ($tab) {
|
|||
enterprise_include('operation/agentes/security_hardening.php');
|
||||
break;
|
||||
|
||||
case 'vulnerabilities':
|
||||
enterprise_include('operation/agentes/vulnerabilities.php');
|
||||
break;
|
||||
|
||||
case 'extension':
|
||||
$found = false;
|
||||
foreach ($config['extensions'] as $extension) {
|
||||
|
|
|
@ -342,6 +342,7 @@ if (is_ajax() === true) {
|
|||
$table_id = get_parameter('table_id', '');
|
||||
$groupRecursion = (bool) get_parameter('groupRecursion', false);
|
||||
$compact_date = (int) get_parameter('compact_date', 0);
|
||||
$compact_name_event = (int) get_parameter('compact_name_event', 0);
|
||||
|
||||
// Datatables offset, limit.
|
||||
$start = (int) get_parameter('start', 0);
|
||||
|
@ -471,7 +472,7 @@ if (is_ajax() === true) {
|
|||
|
||||
$data = array_reduce(
|
||||
$events,
|
||||
function ($carry, $item) use ($table_id, &$redirection_form_id, $filter, $compact_date, $external_url) {
|
||||
function ($carry, $item) use ($table_id, &$redirection_form_id, $filter, $compact_date, $external_url, $compact_name_event) {
|
||||
global $config;
|
||||
|
||||
$tmp = (object) $item;
|
||||
|
@ -518,7 +519,7 @@ if (is_ajax() === true) {
|
|||
|
||||
$tmp->evento = ui_print_truncate_text(
|
||||
$tmp->evento,
|
||||
'description',
|
||||
(empty($compact_name_event) === true) ? 'description' : GENERIC_SIZE_TEXT,
|
||||
false,
|
||||
true,
|
||||
false,
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
%define debug_package %{nil}
|
||||
%define name pandorafms_console
|
||||
%define version 7.0NG.774
|
||||
%define release 231107
|
||||
%define release 231122
|
||||
|
||||
# User and Group under which Apache is running
|
||||
%define httpd_name httpd
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
%define debug_package %{nil}
|
||||
%define name pandorafms_console
|
||||
%define version 7.0NG.774
|
||||
%define release 231107
|
||||
%define release 231122
|
||||
|
||||
# User and Group under which Apache is running
|
||||
%define httpd_name httpd
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
#
|
||||
%define name pandorafms_console
|
||||
%define version 7.0NG.774
|
||||
%define release 231107
|
||||
%define release 231122
|
||||
%define httpd_name httpd
|
||||
# User and Group under which Apache is running
|
||||
%define httpd_name apache2
|
||||
|
|
|
@ -91,6 +91,7 @@ CREATE TABLE IF NOT EXISTS `tagente` (
|
|||
`satellite_server` INT NOT NULL DEFAULT 0,
|
||||
`fixed_ip` TINYINT NOT NULL DEFAULT 0,
|
||||
`disabled_by_downtime` TINYINT NOT NULL DEFAULT 0,
|
||||
`vul_scan_enabled` TINYINT NOT NULL DEFAULT 2,
|
||||
PRIMARY KEY (`id_agente`),
|
||||
KEY `nombre` (`nombre`(255)),
|
||||
KEY `direccion` (`direccion`),
|
||||
|
@ -3552,6 +3553,7 @@ CREATE TABLE IF NOT EXISTS `tmetaconsole_agent` (
|
|||
`satellite_server` INT NOT NULL DEFAULT 0,
|
||||
`fixed_ip` TINYINT NOT NULL DEFAULT 0,
|
||||
`disabled_by_downtime` TINYINT NOT NULL DEFAULT 0,
|
||||
`vul_scan_enabled` TINYINT NOT NULL DEFAULT 2,
|
||||
PRIMARY KEY (`id_agente`),
|
||||
KEY `nombre` (`nombre`(255)),
|
||||
KEY `direccion` (`direccion`),
|
||||
|
@ -4519,4 +4521,14 @@ CREATE TABLE IF NOT EXISTS `tgraph_analytics_filter` (
|
|||
`graph_modules` TEXT NULL,
|
||||
`interval` INT NULL,
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4;
|
||||
|
||||
-- ---------------------------------------------------------------------
|
||||
-- Table `tpandora_cve`
|
||||
-- ---------------------------------------------------------------------
|
||||
CREATE TABLE IF NOT EXISTS `tpandora_cve` (
|
||||
`cve_id` VARCHAR(20),
|
||||
`cvss_score` DOUBLE DEFAULT NULL,
|
||||
`cvss_vector` VARCHAR(255) DEFAULT NULL,
|
||||
PRIMARY KEY (`cve_id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4;
|
File diff suppressed because it is too large
Load Diff
|
@ -763,6 +763,126 @@ class Client
|
|||
}
|
||||
|
||||
|
||||
/**
|
||||
* Executes a curl request.
|
||||
*
|
||||
* @param string $url Url to be called.
|
||||
* @param array $request Options.
|
||||
* @param string $destiny Path.
|
||||
*
|
||||
* @return mixed Response given by curl.
|
||||
*/
|
||||
private function curlSaveToDisk(string $url, array $request, string $destiny)
|
||||
{
|
||||
$ch = curl_init();
|
||||
curl_setopt($ch, CURLOPT_URL, $url);
|
||||
curl_setopt($ch, CURLOPT_POST, true);
|
||||
curl_setopt(
|
||||
$ch,
|
||||
CURLOPT_POSTFIELDS,
|
||||
$request
|
||||
);
|
||||
|
||||
// Abre el archivo en modo escritura para guardar la respuesta.
|
||||
$archivo = fopen($destiny, 'w');
|
||||
|
||||
// Configura cURL para guardar la respuesta directamente en el archivo.
|
||||
curl_setopt($ch, CURLOPT_FILE, $archivo);
|
||||
|
||||
if ($this->insecure === true) {
|
||||
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
|
||||
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
|
||||
}
|
||||
|
||||
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
|
||||
curl_setopt($ch, CURLOPT_TCP_KEEPALIVE, true);
|
||||
|
||||
if (is_array($this->proxy) === true) {
|
||||
curl_setopt($ch, CURLOPT_PROXY, $this->proxy['host']);
|
||||
if (isset($this->proxy['port']) === true) {
|
||||
curl_setopt($ch, CURLOPT_PROXYPORT, $this->proxy['port']);
|
||||
}
|
||||
|
||||
if (isset($this->proxy['user']) === true) {
|
||||
curl_setopt(
|
||||
$ch,
|
||||
CURLOPT_PROXYUSERPWD,
|
||||
$this->proxy['user'].':'.$this->proxy['password']
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
// Track progress.
|
||||
if ((empty($request) === true
|
||||
|| $request['action'] === 'get_package'
|
||||
|| $request['action'] === 'get_server_package')
|
||||
) {
|
||||
curl_setopt(
|
||||
$ch,
|
||||
CURLOPT_NOPROGRESS,
|
||||
false
|
||||
);
|
||||
}
|
||||
|
||||
$target = '';
|
||||
if ($request['action'] === 'get_server_package') {
|
||||
$target = __('server update %s', $request['version']);
|
||||
} else if ($request['action'] === 'get_package') {
|
||||
$target = __('console update %s', $request['version']);
|
||||
}
|
||||
|
||||
// phpcs:disable Generic.CodeAnalysis.UnusedFunctionParameter.Found
|
||||
// phpcs:disable Generic.CodeAnalysis.UnusedFunctionParameter.FoundBeforeLastUsed
|
||||
// phpcs:disable Generic.CodeAnalysis.UnusedFunctionParameter.FoundAfterLastUsed
|
||||
curl_setopt(
|
||||
$ch,
|
||||
CURLOPT_PROGRESSFUNCTION,
|
||||
function (
|
||||
$ch,
|
||||
$total_bytes,
|
||||
$current_bytes,
|
||||
$total_sent_bytes,
|
||||
$current_sent_bytes
|
||||
) use ($target) {
|
||||
if ($total_bytes > 0) {
|
||||
$this->notify(
|
||||
(100 * $current_bytes / $total_bytes),
|
||||
__(
|
||||
'Downloading %s %.2f/ %.2f MB.',
|
||||
$target,
|
||||
($current_bytes / (1024 * 1024)),
|
||||
($total_bytes / (1024 * 1024))
|
||||
),
|
||||
true
|
||||
);
|
||||
} else {
|
||||
$this->notify(
|
||||
0,
|
||||
__(
|
||||
'Downloading %.2f MB',
|
||||
($current_bytes / (1024 * 1024))
|
||||
),
|
||||
true
|
||||
);
|
||||
}
|
||||
}
|
||||
);
|
||||
|
||||
// Call.
|
||||
curl_exec($ch);
|
||||
|
||||
$erro_no = curl_errno($ch);
|
||||
if ($erro_no > 0) {
|
||||
$this->lastError = $erro_no.':'.curl_error($ch);
|
||||
return null;
|
||||
}
|
||||
|
||||
fclose($archivo);
|
||||
curl_close($ch);
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Make a request to Update manager.
|
||||
*
|
||||
|
@ -810,14 +930,26 @@ class Client
|
|||
}
|
||||
}
|
||||
|
||||
// Initialize.
|
||||
$response = $this->curl(
|
||||
$this->url,
|
||||
array_merge(
|
||||
['action' => $request['action']],
|
||||
$request['arguments']
|
||||
)
|
||||
);
|
||||
if ($request['action'] === 'get_server_package') {
|
||||
// Initialize.
|
||||
$response = $this->curlSaveToDisk(
|
||||
$this->url,
|
||||
array_merge(
|
||||
['action' => $request['action']],
|
||||
$request['arguments']
|
||||
),
|
||||
($request['destiny'] ?? '')
|
||||
);
|
||||
} else {
|
||||
// Initialize.
|
||||
$response = $this->curl(
|
||||
$this->url,
|
||||
array_merge(
|
||||
['action' => $request['action']],
|
||||
$request['arguments']
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
if ($literal === true) {
|
||||
return $response;
|
||||
|
@ -1393,10 +1525,6 @@ class Client
|
|||
) {
|
||||
unlink($file);
|
||||
$processed[$file] = 'removed';
|
||||
} else if (is_dir($file) === true) {
|
||||
$processed[$file] = 'skipped, is a directory';
|
||||
} else {
|
||||
$processed[$file] = 'skipped. Unreachable.';
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1836,6 +1964,9 @@ class Client
|
|||
return false;
|
||||
}
|
||||
|
||||
$this->notify(100, 'Updated files', true, ['reload' => true]);
|
||||
sleep(2);
|
||||
|
||||
if ($this->globalTask === null && $this->offline === false) {
|
||||
$this->percentage = 90;
|
||||
$this->currentTask = __('Retrieving server update');
|
||||
|
@ -1985,6 +2116,10 @@ class Client
|
|||
} while ($rc !== null);
|
||||
}
|
||||
|
||||
if ($this->lock() !== true) {
|
||||
return null;
|
||||
}
|
||||
|
||||
$last_error = $this->lastError;
|
||||
$this->updateServerPackage(null, $this->currentPackage);
|
||||
|
||||
|
@ -1995,6 +2130,7 @@ class Client
|
|||
|
||||
$this->percentage = 100;
|
||||
$this->notify(100, 'Updated to '.$this->getVersion().'.');
|
||||
$this->unlock();
|
||||
|
||||
return $this->currentPackage;
|
||||
}
|
||||
|
@ -2133,30 +2269,21 @@ class Client
|
|||
}
|
||||
|
||||
if ($package === null) {
|
||||
// Retrieve package from UMS.
|
||||
$this->notify(0, 'Downloading server update '.$version);
|
||||
$file = $this->post(
|
||||
[
|
||||
'action' => 'get_server_package',
|
||||
'arguments' => ['version' => $version],
|
||||
],
|
||||
1
|
||||
);
|
||||
|
||||
if (empty($file) === true) {
|
||||
// No content.
|
||||
return false;
|
||||
}
|
||||
|
||||
$file_name = 'pandorafms_server-'.$version.'.tar.gz';
|
||||
$official_name = 'pandorafms_server_enterprise-7.0NG.%s_x86_64.tar.gz';
|
||||
$filename_repo = sprintf($official_name, $version);
|
||||
$official_path = $file_path.$filename_repo;
|
||||
|
||||
if (file_put_contents($official_path, $file) === false) {
|
||||
$this->lastError = 'Failed to store server update package.';
|
||||
return false;
|
||||
}
|
||||
// Retrieve package from UMS.
|
||||
$this->notify(0, 'Downloading server update '.$version);
|
||||
$this->post(
|
||||
[
|
||||
'action' => 'get_server_package',
|
||||
'arguments' => ['version' => $version],
|
||||
'destiny' => $official_path,
|
||||
],
|
||||
1
|
||||
);
|
||||
|
||||
$signature = $this->post(
|
||||
[
|
||||
|
|
|
@ -328,11 +328,11 @@ function updateProgress(url, auth) {
|
|||
}
|
||||
|
||||
if (general_label.innerText == "100.00 %") {
|
||||
cleanExit();
|
||||
window.onbeforeunload = undefined;
|
||||
if (_auxIntervalReference != null) {
|
||||
window.clearInterval(_auxIntervalReference);
|
||||
}
|
||||
return;
|
||||
window.location.reload();
|
||||
}
|
||||
|
||||
ajax({
|
||||
|
@ -375,6 +375,19 @@ function updateProgress(url, auth) {
|
|||
|
||||
general_action.innerText = d.result.processing;
|
||||
task_action.innerText = d.result.message;
|
||||
|
||||
// Reload to update console.
|
||||
if (
|
||||
d.result.extra != undefined &&
|
||||
d.result.extra.reload != undefined &&
|
||||
d.result.extra.reload === true
|
||||
) {
|
||||
window.onbeforeunload = undefined;
|
||||
if (_auxIntervalReference != null) {
|
||||
window.clearInterval(_auxIntervalReference);
|
||||
}
|
||||
window.location.reload();
|
||||
}
|
||||
},
|
||||
error: function(d) {
|
||||
dprog.innerHTML = umErrorMsg(d.error);
|
||||
|
|
|
@ -27,7 +27,9 @@
|
|||
* GNU General Public License for more details.
|
||||
* ============================================================================
|
||||
*/
|
||||
|
||||
global $config;
|
||||
|
||||
?>
|
||||
<head>
|
||||
<link rel="stylesheet" href="<?php $asset('resources/styles/um.css'); ?>?v=<?php echo $config['current_package']; ?>">
|
||||
|
@ -57,16 +59,25 @@ global $config;
|
|||
$settings = update_manager_get_config_values();
|
||||
$umc = new \UpdateManager\Client($settings);
|
||||
$updates = $umc->listUpdates();
|
||||
if ($updates === null) {
|
||||
$updates = [];
|
||||
}
|
||||
|
||||
$text_for_next_version = '';
|
||||
$text_for_last_version = '';
|
||||
$back_up_url = 'index.php?sec=gextensions&sec2=enterprise/godmode/manage_backups';
|
||||
if ($updates[0]['lts'] === true) {
|
||||
if (isset($updates[0]['lts']) === true
|
||||
&& $updates[0]['lts'] === true
|
||||
) {
|
||||
$text_for_next_version = __('Attention. You are about to install an LTS version. LTS versions are the most stable and are released twice a year. Before installing this LTS version, please make sure you have an <a href='.$back_up_url.'>up-to-date backup</a>.');
|
||||
} else {
|
||||
$text_for_next_version = __('Attention. You are about to install an RRR version. This version may contain new features and changes, so its installation is not recommended if you are looking for maximum system stability. LTS versions are the most stable and are released twice a year. <br/> Before installing this RRR version, please make sure you have an <a href='.$back_up_url.'>up-to-date backup</a>.');
|
||||
}
|
||||
|
||||
if ($updates[array_key_last($updates)]['lts'] === true) {
|
||||
if (isset($updates[array_key_last($updates)]) === true
|
||||
&& isset($updates[array_key_last($updates)]['lts']) === true
|
||||
&& $updates[array_key_last($updates)]['lts'] === true
|
||||
) {
|
||||
$text_for_last_version = __('Attention. You are about to install an LTS version. LTS versions are the most stable and are released twice a year. Before installing this LTS version, please make sure you have an <a href='.$back_up_url.'>up-to-date backup</a>.');
|
||||
} else {
|
||||
$text_for_last_version = __('Attention. You are about to install an RRR version. This version may contain new features and changes, so its installation is not recommended if you are looking for maximum system stability. LTS versions are the most stable and are released twice a year. <br/> Before installing this RRR version, please make sure you have an <a href='.$back_up_url.'>up-to-date backup</a>.');
|
||||
|
@ -160,14 +171,19 @@ global $config;
|
|||
}
|
||||
},
|
||||
error: function(e, r) {
|
||||
if (typeof r != "undefined" ) {
|
||||
result.innerHTML = umErrorMsg(
|
||||
'<?php echo __('Failed to update to '); ?>' + nextUpdateVersion+' '+r
|
||||
);
|
||||
if(e != '504') {
|
||||
if (typeof r != "undefined" ) {
|
||||
result.innerHTML = umErrorMsg(
|
||||
'<?php echo __('Failed to update to '); ?>' + nextUpdateVersion+' '+r
|
||||
);
|
||||
} else {
|
||||
result.innerHTML = umErrorMsg(
|
||||
'<?php echo __('Failed to update to '); ?>' + nextUpdateVersion+' RC'+e
|
||||
);
|
||||
}
|
||||
} else {
|
||||
result.innerHTML = umErrorMsg(
|
||||
'<?php echo __('Failed to update to '); ?>' + nextUpdateVersion+' RC'+e
|
||||
);
|
||||
cleanExit();
|
||||
window.location.reload();
|
||||
}
|
||||
},
|
||||
});
|
||||
|
@ -202,12 +218,17 @@ global $config;
|
|||
}
|
||||
},
|
||||
error: function(e, r) {
|
||||
if (typeof r != "undefined" ) {
|
||||
result.innerHTML = umErrorMsg(r);
|
||||
if(e != '504') {
|
||||
if (typeof r != "undefined" ) {
|
||||
result.innerHTML = umErrorMsg(r);
|
||||
} else {
|
||||
result.innerHTML = umErrorMsg(
|
||||
'<?php echo __('Failed to update:'); ?> RC'+e
|
||||
);
|
||||
}
|
||||
} else {
|
||||
result.innerHTML = umErrorMsg(
|
||||
'<?php echo __('Failed to update:'); ?> RC'+e
|
||||
);
|
||||
cleanExit();
|
||||
window.location.reload();
|
||||
}
|
||||
},
|
||||
});
|
||||
|
|
|
@ -87,6 +87,10 @@ class DataSet implements ChartOwnedInterface, ArraySerializableInterface, JsonSe
|
|||
*/
|
||||
protected $axis;
|
||||
|
||||
/**
|
||||
* @var string|null
|
||||
*/
|
||||
protected $stack;
|
||||
/**
|
||||
* @return string
|
||||
*/
|
||||
|
@ -404,4 +408,28 @@ class DataSet implements ChartOwnedInterface, ArraySerializableInterface, JsonSe
|
|||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the value of stack
|
||||
*
|
||||
* @return string|null
|
||||
*/
|
||||
public function getStack()
|
||||
{
|
||||
return $this->stack;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the value of stack
|
||||
*
|
||||
* @param string|null $stack
|
||||
*
|
||||
* @return self
|
||||
*/
|
||||
public function setStack($stack)
|
||||
{
|
||||
$this->stack = $stack;
|
||||
|
||||
return $this;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -62,7 +62,12 @@ class JavaScript extends Renderer
|
|||
var elementWidth = (innerRadius * 2) - sidePaddingCalculated;
|
||||
|
||||
var widthRatio = elementWidth / stringWidth;
|
||||
var newFontSize = Math.floor(30 * widthRatio);
|
||||
var aspectRatio = 30;
|
||||
if(window.innerWidth < 1300) {
|
||||
aspectRatio = 20;
|
||||
}
|
||||
|
||||
var newFontSize = Math.floor(aspectRatio * widthRatio);
|
||||
var elementHeight = (innerRadius * 2);
|
||||
|
||||
var fontSizeToUse = Math.min(newFontSize, elementHeight);
|
||||
|
|
|
@ -120,6 +120,7 @@ try {
|
|||
echo $e->getMessage();
|
||||
}
|
||||
|
||||
$buttons = [];
|
||||
if (check_acl($config['id_user'], 0, 'AW')) {
|
||||
$buttons[] = html_print_submit_button(
|
||||
__('New cluster'),
|
||||
|
@ -131,10 +132,11 @@ if (check_acl($config['id_user'], 0, 'AW')) {
|
|||
],
|
||||
true
|
||||
);
|
||||
echo '<form action="'.ui_get_full_url($model->url.'&op=new').'" method="POST">';
|
||||
html_print_action_buttons(
|
||||
implode('', $buttons),
|
||||
['type' => 'form_action']
|
||||
);
|
||||
echo '</form>';
|
||||
}
|
||||
|
||||
echo '<form action="'.ui_get_full_url($model->url.'&op=new').'" method="POST">';
|
||||
html_print_action_buttons(
|
||||
implode('', $buttons),
|
||||
['type' => 'form_action']
|
||||
);
|
||||
echo '</form>';
|
||||
|
|
|
@ -67,6 +67,74 @@ if (isset($resultCopy) === true) {
|
|||
);
|
||||
}
|
||||
|
||||
// Filter table.
|
||||
$filter_id_group = \get_parameter_post('id_group', '');
|
||||
$filter_name = \get_parameter_post('name', '');
|
||||
|
||||
$filterTable = new stdClass();
|
||||
$filterTable->class = 'filter-table-adv w100p';
|
||||
$filterTable->size[0] = '20%';
|
||||
$filterTable->size[1] = '20%';
|
||||
$filterTable->data = [];
|
||||
|
||||
$filterTable->data[0][0] = html_print_label_input_block(
|
||||
__('Group'),
|
||||
html_print_select_groups(
|
||||
false,
|
||||
'AR',
|
||||
true,
|
||||
'id_group',
|
||||
$filter_id_group,
|
||||
'',
|
||||
'',
|
||||
'',
|
||||
true,
|
||||
false,
|
||||
true,
|
||||
'w100p',
|
||||
false,
|
||||
''
|
||||
)
|
||||
);
|
||||
|
||||
$filterTable->data[0][1] = html_print_label_input_block(
|
||||
__('Name'),
|
||||
html_print_input_text('name', $filter_name, '', 25, 80, true)
|
||||
);
|
||||
|
||||
$form_html = '<form id="form_dashboard_search" method="post" action="'.$urlDashboard.'">';
|
||||
$form_html .= html_print_table($filterTable, true);
|
||||
$form_html .= html_print_div(
|
||||
[
|
||||
'class' => 'action-buttons',
|
||||
'content' => html_print_submit_button(
|
||||
__('Filter'),
|
||||
'uptbutton',
|
||||
false,
|
||||
[
|
||||
'icon' => 'search',
|
||||
'mode' => 'mini',
|
||||
],
|
||||
true
|
||||
),
|
||||
],
|
||||
true
|
||||
);
|
||||
$form_html .= '</form>';
|
||||
|
||||
ui_toggle(
|
||||
$form_html,
|
||||
'<span class="subsection_header_title">'.__('Filter').'</span>',
|
||||
'dashboard_search',
|
||||
false,
|
||||
true,
|
||||
false,
|
||||
'',
|
||||
'white-box-content',
|
||||
'box-flat white_table_graph fixed_filter_bar'
|
||||
);
|
||||
|
||||
|
||||
if (empty($dashboards) === true) {
|
||||
ui_print_info_message(
|
||||
[
|
||||
|
@ -75,144 +143,63 @@ if (empty($dashboards) === true) {
|
|||
]
|
||||
);
|
||||
} else {
|
||||
$table = new stdClass();
|
||||
$table->width = '100%';
|
||||
$table->class = 'info_table';
|
||||
$table->headstyle['name'] = 'text-align: left;';
|
||||
$table->headstyle['cells'] = 'text-align: center;';
|
||||
$table->headstyle['groups'] = 'text-align: center;';
|
||||
$table->headstyle['favorite'] = 'text-align: center;';
|
||||
$table->headstyle['full_screen'] = 'text-align: center;';
|
||||
|
||||
$table->style = [];
|
||||
$table->style['name'] = 'text-align: left;';
|
||||
$table->style['cells'] = 'text-align: center;';
|
||||
$table->style['groups'] = 'text-align: center;';
|
||||
$table->style['favorite'] = 'text-align: center;';
|
||||
$table->style['full_screen'] = 'text-align: center;';
|
||||
|
||||
$table->size = [];
|
||||
$table->size['name'] = '40%';
|
||||
$table->size['full_screen'] = '30px';
|
||||
|
||||
$table->head = [];
|
||||
$table->head['name'] = __('Name');
|
||||
$table->head['cells'] = __('Cells');
|
||||
$table->head['groups'] = __('Group');
|
||||
$table->head['favorite'] = __('Favorite');
|
||||
$table->head['full_screen'] = __('Full screen');
|
||||
$id_table = 'dashboards_list';
|
||||
$columns = [
|
||||
'name',
|
||||
'cells',
|
||||
'groups',
|
||||
'favorite',
|
||||
'full_screen',
|
||||
];
|
||||
|
||||
$column_names = [
|
||||
__('Name'),
|
||||
__('Cells'),
|
||||
__('Group'),
|
||||
__('Favorite'),
|
||||
__('Full screen'),
|
||||
];
|
||||
if ($manageDashboards === 1) {
|
||||
$table->head['copy'] = __('Copy');
|
||||
$table->head['delete'] = __('Delete');
|
||||
$table->headstyle['copy'] = 'text-align: center;';
|
||||
$table->headstyle['delete'] = 'text-align: center;';
|
||||
$table->style['copy'] = 'text-align: center;';
|
||||
$table->style['delete'] = 'text-align: center;';
|
||||
$table->size['cells'] = '30px';
|
||||
$table->size['groups'] = '30px';
|
||||
$table->size['favorite'] = '30px';
|
||||
$table->size['copy'] = '30px';
|
||||
$table->size['delete'] = '30px';
|
||||
} else {
|
||||
$table->size['cells'] = '60px';
|
||||
$table->size['groups'] = '60px';
|
||||
$table->size['favorite'] = '60px';
|
||||
$columns[] = 'copy';
|
||||
$columns[] = 'delete';
|
||||
$column_names[] = __('Copy');
|
||||
$column_names[] = __('Delete');
|
||||
}
|
||||
|
||||
$table->data = [];
|
||||
|
||||
foreach ($dashboards as $dashboard) {
|
||||
$data = [];
|
||||
|
||||
$dataQuery = ['dashboardId' => $dashboard['id']];
|
||||
|
||||
$url = $urlDashboard.'&'.http_build_query($dataQuery);
|
||||
$data['name'] = '<a href="'.$url.'">';
|
||||
$data['name'] .= $dashboard['name'];
|
||||
$data['name'] .= '</a>';
|
||||
|
||||
$data['cells'] = $dashboard['cells'];
|
||||
|
||||
if (empty($dashboard['id_user']) === false) {
|
||||
$data['groups'] = __(
|
||||
'Private for (%s)',
|
||||
$dashboard['id_user']
|
||||
);
|
||||
} else {
|
||||
$data['groups'] = ui_print_group_icon(
|
||||
$dashboard['id_group'],
|
||||
true
|
||||
);
|
||||
}
|
||||
|
||||
$data['favorite'] = $dashboard['active'];
|
||||
|
||||
$dataQueryFull = [
|
||||
'dashboardId' => $dashboard['id'],
|
||||
'pure' => 1,
|
||||
];
|
||||
|
||||
$urlFull = $urlDashboard;
|
||||
$urlFull .= '&'.\http_build_query($dataQueryFull);
|
||||
$data['full_screen'] = '<a href="'.$urlFull.'">';
|
||||
$data['full_screen'] .= \html_print_image(
|
||||
'images/fullscreen@svg.svg',
|
||||
true,
|
||||
['class' => 'main_menu_icon invert_filter']
|
||||
);
|
||||
$data['full_screen'] .= '</a>';
|
||||
|
||||
if ($manageDashboards === 1) {
|
||||
$data['copy'] = '';
|
||||
$data['delete'] = '';
|
||||
}
|
||||
|
||||
if (check_acl_restricted_all($config['id_user'], $dashboard['id_group'], 'RM')) {
|
||||
$dataQueryCopy = [
|
||||
'dashboardId' => $dashboard['id'],
|
||||
'copyDashboard' => 1,
|
||||
];
|
||||
$urlCopy = $urlDashboard.'&'.\http_build_query($dataQueryCopy);
|
||||
$data['copy'] = '<a href="'.$urlCopy.'">';
|
||||
$data['copy'] .= html_print_image('images/copy.svg', true, ['class' => 'main_menu_icon invert_filter']);
|
||||
$data['copy'] .= '</a>';
|
||||
|
||||
$dataQueryDelete = [
|
||||
'dashboardId' => $dashboard['id'],
|
||||
'deleteDashboard' => 1,
|
||||
];
|
||||
$urlDelete = $urlDashboard;
|
||||
$urlDelete .= '&'.\http_build_query($dataQueryDelete);
|
||||
$data['delete'] = '<a href="'.$urlDelete;
|
||||
$data['delete'] .= '" onclick="javascript: if (!confirm(\''.__('Are you sure?').'\')) return false;">';
|
||||
$data['delete'] .= \html_print_image(
|
||||
'images/delete.svg',
|
||||
true,
|
||||
['class' => 'main_menu_icon invert_filter']
|
||||
);
|
||||
$data['delete'] .= '</a>';
|
||||
}
|
||||
|
||||
$table->cellclass[] = [
|
||||
'full_screen' => 'table_action_buttons',
|
||||
'copy' => 'table_action_buttons',
|
||||
'delete' => 'table_action_buttons',
|
||||
];
|
||||
|
||||
$table->data[] = $data;
|
||||
}
|
||||
|
||||
\html_print_table($table);
|
||||
$tablePagination = \ui_pagination(
|
||||
$count,
|
||||
false,
|
||||
$offset,
|
||||
0,
|
||||
true,
|
||||
'offset',
|
||||
false,
|
||||
''
|
||||
ui_print_datatable(
|
||||
[
|
||||
'id' => $id_table,
|
||||
'class' => 'info_table',
|
||||
'style' => 'width: 100%',
|
||||
'columns' => $columns,
|
||||
'column_names' => $column_names,
|
||||
'ajax_url' => 'include/ajax/dashboard.ajax',
|
||||
'ajax_data' => [
|
||||
'method' => 'draw',
|
||||
'urlDashboard' => $urlDashboard,
|
||||
'manageDashboards' => $manageDashboards,
|
||||
],
|
||||
'default_pagination' => $config['block_size'],
|
||||
'no_sortable_columns' => [],
|
||||
'order' => [
|
||||
'field' => 'name',
|
||||
'direction' => 'desc',
|
||||
],
|
||||
'search_button_class' => 'sub filter float-right',
|
||||
'form' => [
|
||||
'inputs' => [
|
||||
[
|
||||
'label' => __('Free search'),
|
||||
'type' => 'text',
|
||||
'class' => 'w400px',
|
||||
'id' => 'free_search',
|
||||
'name' => 'free_search',
|
||||
],
|
||||
],
|
||||
],
|
||||
'filter_main_class' => 'box-flat white_table_graph fixed_filter_bar ',
|
||||
'csv' => false,
|
||||
]
|
||||
);
|
||||
}
|
||||
|
||||
|
|
|
@ -41,32 +41,34 @@
|
|||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="br-t">
|
||||
<div class="padding10">
|
||||
<span class="subtitle">
|
||||
<?php echo __('License usage'); ?>
|
||||
</span>
|
||||
<?php echo $Overview->getLicenseUsageGraph(); ?>
|
||||
<?php if ($disableGeneralStatistics === false) : ?>
|
||||
<div class="br-t">
|
||||
<div class="padding10">
|
||||
<span class="subtitle">
|
||||
<?php echo __('License usage'); ?>
|
||||
</span>
|
||||
<?php echo $Overview->getLicenseUsageGraph(); ?>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<?php endif; ?>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row flex-nowrap">
|
||||
<div class="row flex-nowrap height_100p">
|
||||
<div class="col-7 pdd_5px">
|
||||
<div class="container">
|
||||
<div class="title">
|
||||
<?php echo $MonitoringElements->title; ?>
|
||||
</div>
|
||||
<div class="content br-t">
|
||||
<div class="row">
|
||||
<div class="content br-t height_100p">
|
||||
<div class="row height_50p">
|
||||
<div class="col-6 br-r br-b">
|
||||
<div class="subtitle link padding10 padding2">
|
||||
<?php echo __('Top-10 Tags'); ?> <a href="index.php?sec=gusuarios&sec2=godmode/tag/tag"><?php echo __('Info'); ?></a>
|
||||
<?php echo __('Status (%)'); ?> <a href="index.php?sec=view&sec2=operation/agentes/estado_agente"><?php echo __('Info'); ?></a>
|
||||
</div>
|
||||
<?php echo $MonitoringElements->getTagsGraph(); ?>
|
||||
<?php echo $MonitoringElements->getMonitoringStatusGraph(); ?>
|
||||
</div>
|
||||
<div class="col-6 br-b">
|
||||
<div class="subtitle link padding10 padding2">
|
||||
|
@ -75,12 +77,12 @@
|
|||
<?php echo $MonitoringElements->getModuleGroupGraph(); ?>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="row height_50p">
|
||||
<div class="col-6">
|
||||
<div class="subtitle link padding10 padding2">
|
||||
<?php echo __('Status'); ?> <a href="index.php?sec=view&sec2=operation/agentes/estado_agente"><?php echo __('Info'); ?></a>
|
||||
<?php echo __('Top-10 Tags'); ?> <a href="index.php?sec=gusuarios&sec2=godmode/tag/tag"><?php echo __('Info'); ?></a>
|
||||
</div>
|
||||
<?php echo $MonitoringElements->getMonitoringStatusGraph(); ?>
|
||||
<?php echo $MonitoringElements->getTagsGraph(); ?>
|
||||
</div>
|
||||
<div class="col-6 br-l">
|
||||
<div class="subtitle link padding10 padding2">
|
||||
|
@ -165,6 +167,7 @@
|
|||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<?php if ($disableGeneralStatistics === false) : ?>
|
||||
<div class="col-6">
|
||||
<div class="container mrgn_5px" id="logStorage">
|
||||
<div class="title br-b">
|
||||
|
@ -184,7 +187,7 @@
|
|||
<?php echo $LogStorage->getTotalSources(); ?>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="row height_100p">
|
||||
<div class="col-6 br-r">
|
||||
<div class="subtitle">
|
||||
<?php echo __('Stored data'); ?>
|
||||
|
@ -221,6 +224,7 @@
|
|||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<?php endif; ?>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -236,13 +240,13 @@
|
|||
<div class="subtitle">
|
||||
<?php echo __('Currently triggered'); ?>
|
||||
</div>
|
||||
<?php echo $Alerts->getCurrentlyTriggered(); ?>
|
||||
<a href="index.php?sec=galertas&sec2=godmode/alerts/alert_list&status_alert=fired"><?php echo $Alerts->getCurrentlyTriggered(); ?></a>
|
||||
</div>
|
||||
<div class="col-6 br-l">
|
||||
<div class="subtitle">
|
||||
<?php echo __('Active alerts'); ?>
|
||||
</div>
|
||||
<?php echo $Alerts->getActiveAlerts(); ?>
|
||||
<a href="index.php?sec=galertas&sec2=godmode/alerts/alert_list&status_alert=all_enabled"><?php echo $Alerts->getActiveAlerts(); ?></a>
|
||||
</div>
|
||||
</div>
|
||||
<?php if ($Alerts->checkAclUserList() === true) : ?>
|
||||
|
@ -261,13 +265,13 @@
|
|||
<div class="title br-b">
|
||||
<?php echo $Events->title; ?>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-8 br-r">
|
||||
<div class="row" id="auto-rescaling">
|
||||
<div class="col-8 br-r trigger-100">
|
||||
<div class="subtitle link padding10 padding2">
|
||||
<?php echo __('Number of events per hour ('.$config['event_view_hr'].' hrs)'); ?></b> <a href="index.php?sec=eventos&sec2=operation/events/events&filter[event_view_hr]=24&filter[tag_with]=WyIwIl0=&filter[tag_without]=WyIwIl0="><?php echo __('Info'); ?></a>
|
||||
</div>
|
||||
<div id="events-last-24"><?php echo $Events->loading(); ?></div>
|
||||
<div class="row br-t h100p">
|
||||
<div class="row br-t h100p observer">
|
||||
<div class="col-4 br-r">
|
||||
<div class="subtitle padding10 padding2">
|
||||
<?php echo __('Criticality'); ?></b>
|
||||
|
@ -276,7 +280,7 @@
|
|||
</div>
|
||||
<div class="col-4 br-r">
|
||||
<div class="subtitle padding10 padding2">
|
||||
<?php echo __('Status'); ?></b>
|
||||
<?php echo __('Status (%)'); ?></b>
|
||||
</div>
|
||||
<div id="events-status-validate"><?php echo $Events->loading(); ?></div>
|
||||
</div>
|
||||
|
@ -288,7 +292,7 @@
|
|||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-4">
|
||||
<div class="col-4 trigger-100">
|
||||
<div class="subtitle link padding10 padding2">
|
||||
<?php echo __('Active events ('.$config['event_view_hr'].' hrs)'); ?></b> <a href="index.php?sec=eventos&sec2=operation/events/events"><?php echo __('Info'); ?></a>
|
||||
</div>
|
||||
|
@ -333,7 +337,7 @@
|
|||
</div>
|
||||
<?php echo $Agents->getOperatingSystemGraph(); ?>
|
||||
<div class="subtitle padding10 padding2 br-t">
|
||||
<?php echo __('Status'); ?></b>
|
||||
<?php echo __('Status (%)'); ?></b>
|
||||
</div>
|
||||
<?php echo $Agents->getStatusGraph(); ?>
|
||||
</div>
|
||||
|
@ -341,41 +345,43 @@
|
|||
</div>
|
||||
</div>
|
||||
<div class="col-xl-6">
|
||||
<div class="container mrgn_5px">
|
||||
<div class="title br-b">
|
||||
<?php echo $Configurations->title; ?>
|
||||
</div>
|
||||
<div class="row br-b flex-nowrap">
|
||||
<a href="index.php?sec=view&sec2=operation/agentes/group_view" class="col-3 flex flex-column center pdd_20px br-r">
|
||||
<?php echo $Configurations->getTotalGroups(); ?>
|
||||
</a>
|
||||
<a href="index.php?sec=view&sec2=extensions/agents_modules" class="col-3 flex flex-column center pdd_20px br-r">
|
||||
<?php echo $Configurations->getTotalModules(); ?>
|
||||
</a>
|
||||
<?php if (enterprise_installed() === true) : ?>
|
||||
<a href="index.php?sec=gmodules&sec2=enterprise/godmode/policies/policies" class="col-3 flex flex-column center pdd_20px br-r">
|
||||
<?php echo $Configurations->getTotalPolicies(); ?>
|
||||
<?php if ($disableGeneralStatistics === false) : ?>
|
||||
<div class="container mrgn_5px">
|
||||
<div class="title br-b">
|
||||
<?php echo $Configurations->title; ?>
|
||||
</div>
|
||||
<div class="row br-b flex-nowrap">
|
||||
<a href="index.php?sec=view&sec2=operation/agentes/group_view" class="col-3 flex flex-column center pdd_20px br-r">
|
||||
<?php echo $Configurations->getTotalGroups(); ?>
|
||||
</a>
|
||||
<?php endif; ?>
|
||||
<a href="index.php?sec=gservers&sec2=godmode/servers/plugin" class="col-3 flex flex-column center pdd_20px">
|
||||
<?php echo $Configurations->getTotalRemotePlugins(); ?>
|
||||
</a>
|
||||
<a href="index.php?sec=view&sec2=extensions/agents_modules" class="col-3 flex flex-column center pdd_20px br-r">
|
||||
<?php echo $Configurations->getTotalModules(); ?>
|
||||
</a>
|
||||
<?php if (enterprise_installed() === true) : ?>
|
||||
<a href="index.php?sec=gmodules&sec2=enterprise/godmode/policies/policies" class="col-3 flex flex-column center pdd_20px br-r">
|
||||
<?php echo $Configurations->getTotalPolicies(); ?>
|
||||
</a>
|
||||
<?php endif; ?>
|
||||
<a href="index.php?sec=gservers&sec2=godmode/servers/plugin" class="col-3 flex flex-column center pdd_20px">
|
||||
<?php echo $Configurations->getTotalRemotePlugins(); ?>
|
||||
</a>
|
||||
</div>
|
||||
<div class="row flex-nowrap br-b">
|
||||
<a href="index.php?sec=templates&sec2=godmode/modules/manage_module_templates" class="col-4 flex flex-column center pdd_20px br-r">
|
||||
<?php echo $Configurations->getTotalModuleTemplate(); ?>
|
||||
</a>
|
||||
<a href="index.php?sec=view&sec2=operation/agentes/estado_agente&status=5" class="col-4 flex flex-column center pdd_20px br-r">
|
||||
<?php echo $Configurations->getNotInitModules(); ?>
|
||||
</a>
|
||||
<a href="index.php?sec=view&sec2=operation/agentes/estado_agente&status=3" class="col-4 flex flex-column center pdd_20px br-r">
|
||||
<?php echo $Configurations->getTotalUnknowAgents(); ?>
|
||||
</a>
|
||||
<a href="index.php?sec=eventos&sec2=operation/events/events" class="col-4 flex flex-column center pdd_20px">
|
||||
<?php echo $Configurations->getTotalEvents(); ?>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row flex-nowrap br-b">
|
||||
<a href="index.php?sec=templates&sec2=godmode/modules/manage_module_templates" class="col-4 flex flex-column center pdd_20px br-r">
|
||||
<?php echo $Configurations->getTotalModuleTemplate(); ?>
|
||||
</a>
|
||||
<a href="index.php?sec=view&sec2=operation/agentes/estado_agente&status=5" class="col-4 flex flex-column center pdd_20px br-r">
|
||||
<?php echo $Configurations->getNotInitModules(); ?>
|
||||
</a>
|
||||
<a href="index.php?sec=view&sec2=operation/agentes/estado_agente&status=3" class="col-4 flex flex-column center pdd_20px br-r">
|
||||
<?php echo $Configurations->getTotalUnknowAgents(); ?>
|
||||
</a>
|
||||
<a href="index.php?sec=eventos&sec2=operation/events/events" class="col-4 flex flex-column center pdd_20px">
|
||||
<?php echo $Configurations->getTotalEvents(); ?>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
<?php endif; ?>
|
||||
<?php if ($ScheduledDowntime->checkAcl() === true) : ?>
|
||||
<div class="container mrgn_5px">
|
||||
<div class="title br-b">
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
package: pandorafms-server
|
||||
Version: 7.0NG.774-231107
|
||||
Version: 7.0NG.774-231122
|
||||
Architecture: all
|
||||
Priority: optional
|
||||
Section: admin
|
||||
|
|
|
@ -14,7 +14,7 @@
|
|||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
|
||||
pandora_version="7.0NG.774-231107"
|
||||
pandora_version="7.0NG.774-231122"
|
||||
|
||||
package_cpan=0
|
||||
package_pandora=1
|
||||
|
|
|
@ -818,6 +818,8 @@ sub main() {
|
|||
&& $Config{"self_monitoring"} == 1
|
||||
&& !is_metaconsole(\%Config)
|
||||
&& time() - $thr_time_ref > $Config{'self_monitoring_interval'}) {
|
||||
# Update agent name token.
|
||||
pandora_set_tconfig_token($DBH, 'self_monitoring_agent_name', $Config{'self_monitoring_agent_name'});
|
||||
$thr_time_ref = time();
|
||||
pandora_thread_monitoring (\%Config, $DBH, \@Servers);
|
||||
}
|
||||
|
|
|
@ -422,6 +422,9 @@ self_monitoring 1
|
|||
# Self monitoring interval (in seconds).
|
||||
self_monitoring_interval 300
|
||||
|
||||
# Self monitoring agent name.
|
||||
self_monitoring_agent_name pandora.internals
|
||||
|
||||
# Update parent from the agent xml
|
||||
|
||||
update_parent 1
|
||||
|
|
|
@ -46,7 +46,7 @@ our @EXPORT = qw(
|
|||
|
||||
# version: Defines actual version of Pandora Server for this module only
|
||||
my $pandora_version = "7.0NG.774";
|
||||
my $pandora_build = "231107";
|
||||
my $pandora_build = "231122";
|
||||
our $VERSION = $pandora_version." ".$pandora_build;
|
||||
|
||||
# Setup hash
|
||||
|
@ -206,6 +206,9 @@ sub pandora_get_sharedconfig ($$) {
|
|||
|
||||
# Server identifier
|
||||
$pa_config->{'server_unique_identifier'} = pandora_get_tconfig_token ($dbh, 'server_unique_identifier', '');
|
||||
|
||||
# Vulnerability scans
|
||||
$pa_config->{'agent_vulnerabilities'} = pandora_get_tconfig_token ($dbh, 'agent_vulnerabilities', 0);
|
||||
}
|
||||
|
||||
##########################################################################
|
||||
|
@ -416,6 +419,9 @@ sub pandora_load_config {
|
|||
# Self monitoring interval
|
||||
$pa_config->{'self_monitoring_interval'} = 300; # 5.1SP1
|
||||
|
||||
# Self monitoring agent name.
|
||||
$pa_config->{'self_monitoring_agent_name'} = 'pandora.internals'; # 7.774
|
||||
|
||||
# Process XML data files as a stack
|
||||
$pa_config->{"dataserver_lifo"} = 0; # 5.0
|
||||
|
||||
|
@ -1041,6 +1047,9 @@ sub pandora_load_config {
|
|||
elsif ($parametro =~ m/^self_monitoring_interval\s+([0-9]*)/i) {
|
||||
$pa_config->{'self_monitoring_interval'} = clean_blank($1);
|
||||
}
|
||||
elsif ($parametro =~ m/^self_monitoring_agent_name\s+(.*)/i) {
|
||||
$pa_config->{'self_monitoring_agent_name'} = clean_blank($1);
|
||||
}
|
||||
elsif ($parametro =~ m/^update_parent\s+([0-1])/i) {
|
||||
$pa_config->{'update_parent'} = clean_blank($1);
|
||||
}
|
||||
|
|
|
@ -6315,7 +6315,7 @@ sub pandora_self_monitoring ($$) {
|
|||
|
||||
my $xml_output = "";
|
||||
|
||||
$xml_output = "<agent_data os_name='$OS' os_version='$OS_VERSION' version='" . $pa_config->{'version'} . "' description='" . $pa_config->{'rb_product_name'} . " Server version " . $pa_config->{'version'} . "' agent_name='pandora.internals' agent_alias='pandora.internals' interval='".$pa_config->{"self_monitoring_interval"}."' timestamp='".$timestamp."' >";
|
||||
$xml_output = "<agent_data os_name='$OS' os_version='$OS_VERSION' version='" . $pa_config->{'version'} . "' description='" . $pa_config->{'rb_product_name'} . " Server version " . $pa_config->{'version'} . "' agent_name='" . $pa_config->{"self_monitoring_agent_name"} . "' agent_alias='" . $pa_config->{"self_monitoring_agent_name"} . "' interval='".$pa_config->{"self_monitoring_interval"}."' timestamp='".$timestamp."' >";
|
||||
$xml_output .=" <module>";
|
||||
$xml_output .=" <name>Status</name>";
|
||||
$xml_output .=" <type>generic_proc</type>";
|
||||
|
@ -6514,7 +6514,7 @@ sub pandora_self_monitoring ($$) {
|
|||
|
||||
$xml_output .= "</agent_data>";
|
||||
|
||||
my $filename = $pa_config->{"incomingdir"}."/pandora.internals.self".$utimestamp.".data";
|
||||
my $filename = $pa_config->{"incomingdir"}."/".$pa_config->{"self_monitoring_agent_name"}.".self".$utimestamp.".data";
|
||||
open (XMLFILE, ">", $filename) or die "[FATAL] Could not open internal monitoring XML file for deploying monitorization at '$filename'";
|
||||
print XMLFILE $xml_output;
|
||||
close (XMLFILE);
|
||||
|
@ -6539,7 +6539,7 @@ sub pandora_thread_monitoring ($$$) {
|
|||
# All trhead modules are "Status" module sons.
|
||||
$module_parent = 'Status';
|
||||
|
||||
$xml_output = "<agent_data os_name='$OS' os_version='$OS_VERSION' version='" . $pa_config->{'version'} . "' description='" . $pa_config->{'rb_product_name'} . " Server version " . $pa_config->{'version'} . "' agent_name='pandora.internals' agent_alias='pandora.internals' interval='".$pa_config->{"self_monitoring_interval"}."' timestamp='".$timestamp."' >";
|
||||
$xml_output = "<agent_data os_name='$OS' os_version='$OS_VERSION' version='" . $pa_config->{'version'} . "' description='" . $pa_config->{'rb_product_name'} . " Server version " . $pa_config->{'version'} . "' agent_name='" . $pa_config->{'self_monitoring_agent_name'} . "' agent_alias='pandora.internals' interval='".$pa_config->{"self_monitoring_interval"}."' timestamp='".$timestamp."' >";
|
||||
foreach my $server (@{$servers}) {
|
||||
my $producer_stats = $server->getProducerStats();
|
||||
while (my ($tid, $stats) = each(%{$producer_stats})) {
|
||||
|
@ -6605,7 +6605,7 @@ sub pandora_thread_monitoring ($$$) {
|
|||
}
|
||||
$xml_output .= "</agent_data>";
|
||||
|
||||
my $filename = $pa_config->{"incomingdir"}."/pandora.internals.threads.".$utimestamp.".data";
|
||||
my $filename = $pa_config->{"incomingdir"}."/".$pa_config->{'self_monitoring_agent_name'}.".threads.".$utimestamp.".data";
|
||||
open (XMLFILE, ">", $filename) or die "[FATAL] Could not write to the thread monitoring XML file '$filename'";
|
||||
print XMLFILE $xml_output;
|
||||
close (XMLFILE);
|
||||
|
@ -7942,7 +7942,7 @@ sub process_inventory_data ($$$$$$$) {
|
|||
################################################################################
|
||||
# Process inventory module data, creating the module if necessary.
|
||||
################################################################################
|
||||
sub process_inventory_module_data ($$$$$$$$) {
|
||||
sub process_inventory_module_data {
|
||||
my ($pa_config, $data, $server_id, $agent_name,
|
||||
$module_name, $interval, $timestamp, $dbh) = @_;
|
||||
|
||||
|
@ -8004,12 +8004,20 @@ sub process_inventory_module_data ($$$$$$$$) {
|
|||
'INSERT INTO tagente_datos_inventory (id_agent_module_inventory, data, timestamp, utimestamp)
|
||||
VALUES (?, ?, ?, ?)',
|
||||
$id_agent_module_inventory, safe_input($data), $timestamp, $utimestamp);
|
||||
|
||||
return;
|
||||
} else {
|
||||
process_inventory_module_diff($pa_config, safe_input($data),
|
||||
$inventory_module, $timestamp, $utimestamp, $dbh, $interval);
|
||||
}
|
||||
|
||||
# Vulnerability scan.
|
||||
if (($pa_config->{'agent_vulnerabilities'} == 0 && $agent->{'vul_scan_enabled'} == 1) ||
|
||||
($pa_config->{'agent_vulnerabilities'} == 1 && $agent->{'vul_scan_enabled'} == 1) ||
|
||||
($pa_config->{'agent_vulnerabilities'} == 1 && $agent->{'vul_scan_enabled'} == 2)) {
|
||||
my $vulnerability_data = enterprise_hook('process_inventory_vulnerabilities', [$pa_config, $data, $agent, $inventory_module, $dbh]);
|
||||
if (defined($vulnerability_data) && $vulnerability_data ne '') {
|
||||
process_inventory_module_data ($pa_config, $vulnerability_data, $server_id, $agent_name, 'Vulnerabilities', $interval, $timestamp, $dbh);
|
||||
}
|
||||
}
|
||||
|
||||
process_inventory_module_diff($pa_config, safe_input($data),
|
||||
$inventory_module, $timestamp, $utimestamp, $dbh, $interval);
|
||||
}
|
||||
|
||||
################################################################################
|
||||
|
|
|
@ -433,16 +433,17 @@ sub exec_recon_app ($$$) {
|
|||
|
||||
# Configure macros.
|
||||
my %macros = (
|
||||
"__taskMD5__" => md5($task->{'id_rt'}),
|
||||
"__taskInterval__" => $task->{'interval_sweep'},
|
||||
"__taskGroup__" => get_group_name($dbh, $task->{'id_group'}),
|
||||
"__taskGroupID__" => $task->{'id_group'},
|
||||
"__temp__" => $pa_config->{'temporal'},
|
||||
"__incomingDir__" => $pa_config->{'incomingdir'},
|
||||
"__consoleAPIURL__" => $pa_config->{'console_api_url'},
|
||||
"__consoleAPIPass__" => $pa_config->{'console_api_pass'},
|
||||
"__consoleUser__" => $pa_config->{'console_user'},
|
||||
"__consolePass__" => $pa_config->{'console_pass'},
|
||||
"__taskMD5__" => md5($task->{'id_rt'}),
|
||||
"__taskInterval__" => $task->{'interval_sweep'},
|
||||
"__taskGroup__" => get_group_name($dbh, $task->{'id_group'}),
|
||||
"__taskGroupID__" => $task->{'id_group'},
|
||||
"__temp__" => $pa_config->{'temporal'},
|
||||
"__incomingDir__" => $pa_config->{'incomingdir'},
|
||||
"__consoleAPIURL__" => $pa_config->{'console_api_url'},
|
||||
"__consoleAPIPass__" => $pa_config->{'console_api_pass'},
|
||||
"__consoleUser__" => $pa_config->{'console_user'},
|
||||
"__consolePass__" => $pa_config->{'console_pass'},
|
||||
"__pandoraServerConf__" => $pa_config->{'pandora_path'},
|
||||
get_recon_app_macros($pa_config, $dbh, $task),
|
||||
get_recon_script_macros($pa_config, $dbh, $task)
|
||||
);
|
||||
|
@ -654,7 +655,11 @@ sub get_recon_macro_value($$$$) {
|
|||
}
|
||||
# Name of the group if it exists. Empty otherwise.
|
||||
elsif ($type eq 'agent_groups') {
|
||||
my $group_name = get_group_name($dbh, $value);
|
||||
my $group_name = '';
|
||||
if ($value > 0) {
|
||||
$group_name = get_group_name($dbh, $value);
|
||||
}
|
||||
|
||||
if (defined($group_name)) {
|
||||
$ret = $group_name;
|
||||
}
|
||||
|
@ -2227,6 +2232,7 @@ sub PandoraFMS::Recon::Base::connect_agents($$$$$;$) {
|
|||
# data = [
|
||||
# 'agent_data' => {},
|
||||
# 'module_data' => []
|
||||
# 'inventory_data' => []
|
||||
# ]
|
||||
################################################################################
|
||||
sub PandoraFMS::Recon::Base::create_agents($$) {
|
||||
|
@ -2240,7 +2246,8 @@ sub PandoraFMS::Recon::Base::create_agents($$) {
|
|||
|
||||
foreach my $information (@{$data}) {
|
||||
my $agent = $information->{'agent_data'};
|
||||
my $modules = $information->{'module_data'};
|
||||
my $modules = defined($information->{'module_data'}) ? $information->{'module_data'} : [];
|
||||
my $inventory = defined($information->{'inventory_data'}) ? $information->{'inventory_data'} : [];
|
||||
my $force_processing = 0;
|
||||
|
||||
# Search agent
|
||||
|
@ -2249,7 +2256,9 @@ sub PandoraFMS::Recon::Base::create_agents($$) {
|
|||
);
|
||||
|
||||
my $parent_id;
|
||||
if (defined($agent->{'parent_agent_name'})) {
|
||||
if (defined($agent->{'id_parent'})) {
|
||||
$parent_id = $agent->{'id_parent'};
|
||||
} elsif (defined($agent->{'parent_agent_name'})) {
|
||||
$parent_id = PandoraFMS::Core::locate_agent(
|
||||
$pa_config, $dbh, $agent->{'parent_agent_name'}
|
||||
);
|
||||
|
@ -2259,7 +2268,7 @@ sub PandoraFMS::Recon::Base::create_agents($$) {
|
|||
}
|
||||
|
||||
my $agent_id;
|
||||
my $os_id = get_os_id($dbh, $agent->{'os'});
|
||||
my $os_id = defined($agent->{'id_os'}) ? $agent->{'id_os'} : get_os_id($dbh, $agent->{'os'});
|
||||
|
||||
if ($os_id < 0) {
|
||||
$os_id = get_os_id($dbh, 'Other');
|
||||
|
@ -2322,8 +2331,20 @@ sub PandoraFMS::Recon::Base::create_agents($$) {
|
|||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# Add inventory data.
|
||||
if (ref($inventory) eq "HASH") {
|
||||
PandoraFMS::Core::process_inventory_data (
|
||||
$pa_config,
|
||||
$inventory,
|
||||
0, # Does not seem to be used.
|
||||
$agent->{'agent_name'},
|
||||
$agent->{'interval'},
|
||||
strftime ("%Y/%m/%d %H:%M:%S", localtime()),
|
||||
$dbh
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
################################################################################
|
||||
|
|
|
@ -34,7 +34,7 @@ our @ISA = qw(Exporter);
|
|||
|
||||
# version: Defines actual version of Pandora Server for this module only
|
||||
my $pandora_version = "7.0NG.774";
|
||||
my $pandora_build = "231107";
|
||||
my $pandora_build = "231122";
|
||||
our $VERSION = $pandora_version." ".$pandora_build;
|
||||
|
||||
our %EXPORT_TAGS = ( 'all' => [ qw() ] );
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
%define debug_package %{nil}
|
||||
%define name pandorafms_server
|
||||
%define version 7.0NG.774
|
||||
%define release 231107
|
||||
%define release 231122
|
||||
|
||||
Summary: Pandora FMS Server
|
||||
Name: %{name}
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
%global __os_install_post %{nil}
|
||||
%define name pandorafms_server
|
||||
%define version 7.0NG.774
|
||||
%define release 231107
|
||||
%define release 231122
|
||||
|
||||
Summary: Pandora FMS Server
|
||||
Name: %{name}
|
||||
|
|
|
@ -9,7 +9,7 @@
|
|||
# **********************************************************************
|
||||
|
||||
PI_VERSION="7.0NG.774"
|
||||
PI_BUILD="231107"
|
||||
PI_BUILD="231122"
|
||||
|
||||
MODE=$1
|
||||
if [ $# -gt 1 ]; then
|
||||
|
|
|
@ -38,7 +38,7 @@ use PandoraFMS::Config;
|
|||
use PandoraFMS::DB;
|
||||
|
||||
# version: define current version
|
||||
my $version = "7.0NG.774 Build 231107";
|
||||
my $version = "7.0NG.774 Build 231122";
|
||||
|
||||
# Pandora server configuration
|
||||
my %conf;
|
||||
|
|
|
@ -36,7 +36,7 @@ use Encode::Locale;
|
|||
Encode::Locale::decode_argv;
|
||||
|
||||
# version: define current version
|
||||
my $version = "7.0NG.774 Build 231107";
|
||||
my $version = "7.0NG.774 Build 231122";
|
||||
|
||||
# save program name for logging
|
||||
my $progname = basename($0);
|
||||
|
|
Loading…
Reference in New Issue