mirror of
https://github.com/pandorafms/pandorafms.git
synced 2025-07-27 15:54:29 +02:00
Merge branch 'ent-12252-vista-tactica-de-seguridad-vulnerabilidades' into ent-12249-vista-de-seguridad-por-agentes
This commit is contained in:
commit
65524d0ee9
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(
|
ui_toggle(
|
||||||
html_print_table($tableAdvancedAgent, true),
|
html_print_table($tableAdvancedAgent, true),
|
||||||
'<span class="subsection_header_title">'.__('Advanced options').'</span>',
|
'<span class="subsection_header_title">'.__('Advanced options').'</span>',
|
||||||
|
@ -231,6 +231,7 @@ if ($create_agent) {
|
|||||||
$quiet = (int) get_parameter('quiet', 0);
|
$quiet = (int) get_parameter('quiet', 0);
|
||||||
$cps = (int) get_parameter_switch('cps', -1);
|
$cps = (int) get_parameter_switch('cps', -1);
|
||||||
$fixed_ip = (int) get_parameter_switch('fixed_ip', 0);
|
$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', '');
|
$secondary_groups = (array) get_parameter('secondary_groups_selected', '');
|
||||||
$fields = db_get_all_fields_in_table('tagent_custom_fields');
|
$fields = db_get_all_fields_in_table('tagent_custom_fields');
|
||||||
@ -298,6 +299,7 @@ if ($create_agent) {
|
|||||||
'quiet' => $quiet,
|
'quiet' => $quiet,
|
||||||
'cps' => $cps,
|
'cps' => $cps,
|
||||||
'fixed_ip' => $fixed_ip,
|
'fixed_ip' => $fixed_ip,
|
||||||
|
'vul_scan_enabled' => $vul_scan_enabled,
|
||||||
]
|
]
|
||||||
);
|
);
|
||||||
} else {
|
} else {
|
||||||
@ -610,6 +612,7 @@ if ($id_agente) {
|
|||||||
$agent_wizard['active'] = false;
|
$agent_wizard['active'] = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
if (check_acl_one_of_groups($config['id_user'], $all_groups, 'AW') === true) {
|
if (check_acl_one_of_groups($config['id_user'], $all_groups, 'AW') === true) {
|
||||||
if ($has_remote_conf !== false) {
|
if ($has_remote_conf !== false) {
|
||||||
$agent_name = agents_get_name($id_agente);
|
$agent_name = agents_get_name($id_agente);
|
||||||
@ -642,6 +645,7 @@ if ($id_agente) {
|
|||||||
'collection' => $collectiontab,
|
'collection' => $collectiontab,
|
||||||
'group' => $grouptab,
|
'group' => $grouptab,
|
||||||
'gis' => $gistab,
|
'gis' => $gistab,
|
||||||
|
'vulnerabilities' => $vulnerabilities,
|
||||||
'agent_wizard' => $agent_wizard,
|
'agent_wizard' => $agent_wizard,
|
||||||
];
|
];
|
||||||
} else {
|
} else {
|
||||||
@ -659,6 +663,7 @@ if ($id_agente) {
|
|||||||
'collection' => $collectiontab,
|
'collection' => $collectiontab,
|
||||||
'group' => $grouptab,
|
'group' => $grouptab,
|
||||||
'gis' => $gistab,
|
'gis' => $gistab,
|
||||||
|
'vulnerabilities' => $vulnerabilities,
|
||||||
'agent_wizard' => $agent_wizard,
|
'agent_wizard' => $agent_wizard,
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
@ -760,6 +765,11 @@ if ($id_agente) {
|
|||||||
$help_header = 'gis_tab';
|
$help_header = 'gis_tab';
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case 'vulnerabilities':
|
||||||
|
$tab_name = __('Vulnerabilities');
|
||||||
|
$help_header = 'vulnerabilities_tab';
|
||||||
|
break;
|
||||||
|
|
||||||
case 'incident':
|
case 'incident':
|
||||||
$tab_name = __('Incidents');
|
$tab_name = __('Incidents');
|
||||||
break;
|
break;
|
||||||
@ -1004,6 +1014,7 @@ if ($update_agent) {
|
|||||||
$secondary_groups = (array) get_parameter('secondary_groups_selected', '');
|
$secondary_groups = (array) get_parameter('secondary_groups_selected', '');
|
||||||
$satellite_server = (int) get_parameter('satellite_server', 0);
|
$satellite_server = (int) get_parameter('satellite_server', 0);
|
||||||
$fixed_ip = (int) get_parameter_switch('fixed_ip', 0);
|
$fixed_ip = (int) get_parameter_switch('fixed_ip', 0);
|
||||||
|
$vul_scan_enabled = (int) get_parameter_switch('vul_scan_enabled', 2);
|
||||||
|
|
||||||
if ($fields === false) {
|
if ($fields === false) {
|
||||||
$fields = [];
|
$fields = [];
|
||||||
@ -1130,6 +1141,7 @@ if ($update_agent) {
|
|||||||
'safe_mode_module' => $safe_mode_module,
|
'safe_mode_module' => $safe_mode_module,
|
||||||
'satellite_server' => $satellite_server,
|
'satellite_server' => $satellite_server,
|
||||||
'fixed_ip' => $fixed_ip,
|
'fixed_ip' => $fixed_ip,
|
||||||
|
'vul_scan_enabled' => $vul_scan_enabled,
|
||||||
];
|
];
|
||||||
|
|
||||||
if ($config['metaconsole_agent_cache'] == 1) {
|
if ($config['metaconsole_agent_cache'] == 1) {
|
||||||
@ -1287,6 +1299,7 @@ if ($id_agente) {
|
|||||||
$safe_mode = ($safe_mode_module) ? 1 : 0;
|
$safe_mode = ($safe_mode_module) ? 1 : 0;
|
||||||
$satellite_server = (int) $agent['satellite_server'];
|
$satellite_server = (int) $agent['satellite_server'];
|
||||||
$fixed_ip = (int) $agent['fixed_ip'];
|
$fixed_ip = (int) $agent['fixed_ip'];
|
||||||
|
$vul_scan_enabled = (int) $agent['vul_scan_enabled'];
|
||||||
}
|
}
|
||||||
|
|
||||||
$update_module = (bool) get_parameter('update_module');
|
$update_module = (bool) get_parameter('update_module');
|
||||||
@ -2425,6 +2438,10 @@ switch ($tab) {
|
|||||||
include 'agent_conf_gis.php';
|
include 'agent_conf_gis.php';
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case 'vulnerabilities':
|
||||||
|
include enterprise_include('godmode/agentes/vulnerabilities_editor.php');
|
||||||
|
break;
|
||||||
|
|
||||||
case 'incident':
|
case 'incident':
|
||||||
include 'agent_incidents.php';
|
include 'agent_incidents.php';
|
||||||
break;
|
break;
|
||||||
|
@ -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 '<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">';
|
echo '<fieldset class="margin-bottom-10">';
|
||||||
|
7
pandora_console/images/vulnerability_scan@svg.svg
Normal file
7
pandora_console/images/vulnerability_scan@svg.svg
Normal file
@ -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 |
@ -487,6 +487,10 @@ function config_update_config()
|
|||||||
$error_update[] = __('Legacy database HA');
|
$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) {
|
if (config_update_value('ipam_ocuppied_critical_treshold', get_parameter('ipam_ocuppied_critical_treshold'), true) === false) {
|
||||||
$error_update[] = __('Ipam Ocuppied Manager Critical');
|
$error_update[] = __('Ipam Ocuppied Manager Critical');
|
||||||
}
|
}
|
||||||
@ -2441,6 +2445,10 @@ function config_process_config()
|
|||||||
config_update_value('show_experimental_features', 0);
|
config_update_value('show_experimental_features', 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!isset($config['agent_vulnerabilities'])) {
|
||||||
|
config_update_value('agent_vulnerabilities', 1);
|
||||||
|
}
|
||||||
|
|
||||||
if (!isset($config['console_log_enabled'])) {
|
if (!isset($config['console_log_enabled'])) {
|
||||||
config_update_value('console_log_enabled', 0);
|
config_update_value('console_log_enabled', 0);
|
||||||
}
|
}
|
||||||
|
@ -1019,6 +1019,7 @@ function get_build_setup_charts($type, $options, $data)
|
|||||||
$chart->setCircumference($options['circumference']);
|
$chart->setCircumference($options['circumference']);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$stacked = false;
|
||||||
if (isset($options['scales']) === true
|
if (isset($options['scales']) === true
|
||||||
&& empty($options['scales']) === false
|
&& empty($options['scales']) === false
|
||||||
&& is_array($options['scales']) === true
|
&& is_array($options['scales']) === true
|
||||||
@ -1082,6 +1083,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
|
if (isset($options['scales']['x']['ticks']) === true
|
||||||
&& empty($options['scales']['x']['ticks']) === false
|
&& empty($options['scales']['x']['ticks']) === false
|
||||||
&& is_array($options['scales']['x']['ticks']) === true
|
&& is_array($options['scales']['x']['ticks']) === true
|
||||||
@ -1131,6 +1139,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
|
if (isset($options['scales']['y']['ticks']) === true
|
||||||
&& empty($options['scales']['y']['ticks']) === false
|
&& empty($options['scales']['y']['ticks']) === false
|
||||||
&& is_array($options['scales']['y']['ticks']) === true
|
&& is_array($options['scales']['y']['ticks']) === true
|
||||||
@ -1247,11 +1262,37 @@ function get_build_setup_charts($type, $options, $data)
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case 'BAR':
|
case 'BAR':
|
||||||
|
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')->setBackgroundColor($colors);
|
||||||
$setData->setLabel('data')->setBorderColor($borders);
|
$setData->setLabel('data')->setBorderColor($borders);
|
||||||
$setData->setLabel('data')->setBorderWidth(2);
|
$setData->setLabel('data')->setBorderWidth(2);
|
||||||
|
|
||||||
$setData->setLabel('data')->data()->exchangeArray(array_values($data));
|
$setData->setLabel('data')->data()->exchangeArray(array_values($data));
|
||||||
|
}
|
||||||
|
|
||||||
// Para las horizontales.
|
// Para las horizontales.
|
||||||
if (isset($options['axis']) === true
|
if (isset($options['axis']) === true
|
||||||
@ -1266,6 +1307,7 @@ function get_build_setup_charts($type, $options, $data)
|
|||||||
foreach ($data as $key => $dataset) {
|
foreach ($data as $key => $dataset) {
|
||||||
$dataSet1 = $chart->createDataSet();
|
$dataSet1 = $chart->createDataSet();
|
||||||
$dataSet1->setBackgroundColor($dataset['backgroundColor']);
|
$dataSet1->setBackgroundColor($dataset['backgroundColor']);
|
||||||
|
$dataSet1->setLabel($dataset['label']);
|
||||||
$dataSet1->setBorderColor($dataset['borderColor']);
|
$dataSet1->setBorderColor($dataset['borderColor']);
|
||||||
$dataSet1->setPointBackgroundColor($dataset['pointBackgroundColor']);
|
$dataSet1->setPointBackgroundColor($dataset['pointBackgroundColor']);
|
||||||
$dataSet1->setPointBorderColor($dataset['pointBorderColor']);
|
$dataSet1->setPointBorderColor($dataset['pointBorderColor']);
|
||||||
@ -1298,7 +1340,11 @@ function get_build_setup_charts($type, $options, $data)
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($type !== 'RADAR' && $type !== 'LINE') {
|
if ($type !== 'RADAR'
|
||||||
|
&& $type !== 'LINE'
|
||||||
|
&& $stacked === false
|
||||||
|
&& (isset($options['multiple']) === false || empty($options['multiple']) === true)
|
||||||
|
) {
|
||||||
$chart->addDataSet($setData);
|
$chart->addDataSet($setData);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -35,6 +35,7 @@ class Database extends Element
|
|||||||
public function __construct()
|
public function __construct()
|
||||||
{
|
{
|
||||||
parent::__construct();
|
parent::__construct();
|
||||||
|
include_once $config['homedir'].'/include/graphs/fgraph.php';
|
||||||
$this->title = __('Database');
|
$this->title = __('Database');
|
||||||
$this->ajaxMethods = [
|
$this->ajaxMethods = [
|
||||||
'getStatus',
|
'getStatus',
|
||||||
|
@ -35,6 +35,7 @@ class Overview extends Element
|
|||||||
public function __construct()
|
public function __construct()
|
||||||
{
|
{
|
||||||
global $config;
|
global $config;
|
||||||
|
include_once $config['homedir'].'/include/graphs/fgraph.php';
|
||||||
parent::__construct();
|
parent::__construct();
|
||||||
if (is_ajax() === true) {
|
if (is_ajax() === true) {
|
||||||
include_once $config['homedir'].'/include/functions_servers.php';
|
include_once $config['homedir'].'/include/functions_servers.php';
|
||||||
|
169
pandora_console/include/styles/vulnerabilities.css
Normal file
169
pandora_console/include/styles/vulnerabilities.css
Normal file
@ -0,0 +1,169 @@
|
|||||||
|
.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: 10px;
|
||||||
|
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%;
|
||||||
|
}
|
||||||
|
.col-sl-12 {
|
||||||
|
width: 100%;
|
||||||
|
display: flex;
|
||||||
|
}
|
||||||
|
|
||||||
|
.col-sl-4 {
|
||||||
|
width: 33%;
|
||||||
|
margin: 10px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@keyframes load {
|
||||||
|
from {
|
||||||
|
width: 0%;
|
||||||
|
}
|
||||||
|
to {
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
}
|
@ -45,6 +45,7 @@ ui_require_css_file('agent_view');
|
|||||||
|
|
||||||
enterprise_include_once('operation/agentes/ver_agente.php');
|
enterprise_include_once('operation/agentes/ver_agente.php');
|
||||||
enterprise_include_once('include/functions_security_hardening.php');
|
enterprise_include_once('include/functions_security_hardening.php');
|
||||||
|
enterprise_include_once('include/functions_vulnerabilities.php');
|
||||||
|
|
||||||
check_login();
|
check_login();
|
||||||
if (is_ajax()) {
|
if (is_ajax()) {
|
||||||
@ -1858,7 +1859,6 @@ $external_tools['text'] = html_print_menu_button(
|
|||||||
$external_tools['active'] = ($tab === 'external_tools');
|
$external_tools['active'] = ($tab === 'external_tools');
|
||||||
|
|
||||||
if (enterprise_installed() === true && security_hardening_installed() === true) {
|
if (enterprise_installed() === true && security_hardening_installed() === true) {
|
||||||
// External Tools tab.
|
|
||||||
$security_hardening['text'] = html_print_menu_button(
|
$security_hardening['text'] = html_print_menu_button(
|
||||||
[
|
[
|
||||||
'href' => 'index.php?sec=estado&sec2=operation/agentes/ver_agente&tab=security_hardening&id_agente='.$id_agente,
|
'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');
|
$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 = [
|
$onheader = [
|
||||||
'manage' => ($managetab ?? null),
|
'manage' => ($managetab ?? null),
|
||||||
'main' => ($maintab ?? null),
|
'main' => ($maintab ?? null),
|
||||||
@ -1889,6 +1909,7 @@ $onheader = [
|
|||||||
'ncm_view' => ($ncm_tab ?? null),
|
'ncm_view' => ($ncm_tab ?? null),
|
||||||
'external_tools' => ($external_tools ?? null),
|
'external_tools' => ($external_tools ?? null),
|
||||||
'security_hardening' => ($security_hardening ?? null),
|
'security_hardening' => ($security_hardening ?? null),
|
||||||
|
'vulnerabilities' => ($vulnerabilities ?? null),
|
||||||
'incident' => ($incidenttab ?? null),
|
'incident' => ($incidenttab ?? null),
|
||||||
'omnishell' => ($omnishellTab ?? null),
|
'omnishell' => ($omnishellTab ?? null),
|
||||||
];
|
];
|
||||||
@ -2073,6 +2094,10 @@ switch ($tab) {
|
|||||||
$tab_name = __('Security hardening');
|
$tab_name = __('Security hardening');
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case 'vulnerabilities':
|
||||||
|
$tab_name = __('Vulnerabilities');
|
||||||
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
$tab_name = '';
|
$tab_name = '';
|
||||||
$help_header = '';
|
$help_header = '';
|
||||||
@ -2222,6 +2247,10 @@ switch ($tab) {
|
|||||||
enterprise_include('operation/agentes/security_hardening.php');
|
enterprise_include('operation/agentes/security_hardening.php');
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case 'vulnerabilities':
|
||||||
|
enterprise_include('operation/agentes/vulnerabilities.php');
|
||||||
|
break;
|
||||||
|
|
||||||
case 'extension':
|
case 'extension':
|
||||||
$found = false;
|
$found = false;
|
||||||
foreach ($config['extensions'] as $extension) {
|
foreach ($config['extensions'] as $extension) {
|
||||||
|
@ -91,6 +91,7 @@ CREATE TABLE IF NOT EXISTS `tagente` (
|
|||||||
`satellite_server` INT NOT NULL DEFAULT 0,
|
`satellite_server` INT NOT NULL DEFAULT 0,
|
||||||
`fixed_ip` TINYINT NOT NULL DEFAULT 0,
|
`fixed_ip` TINYINT NOT NULL DEFAULT 0,
|
||||||
`disabled_by_downtime` 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`),
|
PRIMARY KEY (`id_agente`),
|
||||||
KEY `nombre` (`nombre`(255)),
|
KEY `nombre` (`nombre`(255)),
|
||||||
KEY `direccion` (`direccion`),
|
KEY `direccion` (`direccion`),
|
||||||
@ -4520,3 +4521,13 @@ CREATE TABLE IF NOT EXISTS `tgraph_analytics_filter` (
|
|||||||
`interval` INT NULL,
|
`interval` INT NULL,
|
||||||
PRIMARY KEY (`id`)
|
PRIMARY KEY (`id`)
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4;
|
) 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
@ -87,6 +87,10 @@ class DataSet implements ChartOwnedInterface, ArraySerializableInterface, JsonSe
|
|||||||
*/
|
*/
|
||||||
protected $axis;
|
protected $axis;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var string|null
|
||||||
|
*/
|
||||||
|
protected $stack;
|
||||||
/**
|
/**
|
||||||
* @return string
|
* @return string
|
||||||
*/
|
*/
|
||||||
@ -404,4 +408,28 @@ class DataSet implements ChartOwnedInterface, ArraySerializableInterface, JsonSe
|
|||||||
|
|
||||||
return $this;
|
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 elementWidth = (innerRadius * 2) - sidePaddingCalculated;
|
||||||
|
|
||||||
var widthRatio = elementWidth / stringWidth;
|
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 elementHeight = (innerRadius * 2);
|
||||||
|
|
||||||
var fontSizeToUse = Math.min(newFontSize, elementHeight);
|
var fontSizeToUse = Math.min(newFontSize, elementHeight);
|
||||||
|
@ -206,6 +206,9 @@ sub pandora_get_sharedconfig ($$) {
|
|||||||
|
|
||||||
# Server identifier
|
# Server identifier
|
||||||
$pa_config->{'server_unique_identifier'} = pandora_get_tconfig_token ($dbh, 'server_unique_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);
|
||||||
}
|
}
|
||||||
|
|
||||||
##########################################################################
|
##########################################################################
|
||||||
|
@ -8004,12 +8004,20 @@ sub process_inventory_module_data ($$$$$$$$) {
|
|||||||
'INSERT INTO tagente_datos_inventory (id_agent_module_inventory, data, timestamp, utimestamp)
|
'INSERT INTO tagente_datos_inventory (id_agent_module_inventory, data, timestamp, utimestamp)
|
||||||
VALUES (?, ?, ?, ?)',
|
VALUES (?, ?, ?, ?)',
|
||||||
$id_agent_module_inventory, safe_input($data), $timestamp, $utimestamp);
|
$id_agent_module_inventory, safe_input($data), $timestamp, $utimestamp);
|
||||||
|
} else {
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
process_inventory_module_diff($pa_config, safe_input($data),
|
process_inventory_module_diff($pa_config, safe_input($data),
|
||||||
$inventory_module, $timestamp, $utimestamp, $dbh, $interval);
|
$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, $agent->{'os_version'}, $data, $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);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
################################################################################
|
################################################################################
|
||||||
|
@ -443,6 +443,7 @@ sub exec_recon_app ($$$) {
|
|||||||
"__consoleAPIPass__" => $pa_config->{'console_api_pass'},
|
"__consoleAPIPass__" => $pa_config->{'console_api_pass'},
|
||||||
"__consoleUser__" => $pa_config->{'console_user'},
|
"__consoleUser__" => $pa_config->{'console_user'},
|
||||||
"__consolePass__" => $pa_config->{'console_pass'},
|
"__consolePass__" => $pa_config->{'console_pass'},
|
||||||
|
"__pandoraServerConf__" => $pa_config->{'pandora_path'},
|
||||||
get_recon_app_macros($pa_config, $dbh, $task),
|
get_recon_app_macros($pa_config, $dbh, $task),
|
||||||
get_recon_script_macros($pa_config, $dbh, $task)
|
get_recon_script_macros($pa_config, $dbh, $task)
|
||||||
);
|
);
|
||||||
@ -2227,6 +2228,7 @@ sub PandoraFMS::Recon::Base::connect_agents($$$$$;$) {
|
|||||||
# data = [
|
# data = [
|
||||||
# 'agent_data' => {},
|
# 'agent_data' => {},
|
||||||
# 'module_data' => []
|
# 'module_data' => []
|
||||||
|
# 'inventory_data' => []
|
||||||
# ]
|
# ]
|
||||||
################################################################################
|
################################################################################
|
||||||
sub PandoraFMS::Recon::Base::create_agents($$) {
|
sub PandoraFMS::Recon::Base::create_agents($$) {
|
||||||
@ -2240,7 +2242,8 @@ sub PandoraFMS::Recon::Base::create_agents($$) {
|
|||||||
|
|
||||||
foreach my $information (@{$data}) {
|
foreach my $information (@{$data}) {
|
||||||
my $agent = $information->{'agent_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;
|
my $force_processing = 0;
|
||||||
|
|
||||||
# Search agent
|
# Search agent
|
||||||
@ -2249,7 +2252,9 @@ sub PandoraFMS::Recon::Base::create_agents($$) {
|
|||||||
);
|
);
|
||||||
|
|
||||||
my $parent_id;
|
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(
|
$parent_id = PandoraFMS::Core::locate_agent(
|
||||||
$pa_config, $dbh, $agent->{'parent_agent_name'}
|
$pa_config, $dbh, $agent->{'parent_agent_name'}
|
||||||
);
|
);
|
||||||
@ -2259,7 +2264,7 @@ sub PandoraFMS::Recon::Base::create_agents($$) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
my $agent_id;
|
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) {
|
if ($os_id < 0) {
|
||||||
$os_id = get_os_id($dbh, 'Other');
|
$os_id = get_os_id($dbh, 'Other');
|
||||||
@ -2322,8 +2327,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
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
################################################################################
|
################################################################################
|
||||||
|
Loading…
x
Reference in New Issue
Block a user