minor fixes
This commit is contained in:
parent
c18d339730
commit
23c19856b8
|
@ -524,7 +524,9 @@ class DiscoveryTaskList extends HTML
|
|||
}
|
||||
|
||||
if ($task['direct_report'] == 1) {
|
||||
if ($task['status'] <= 0) {
|
||||
if ($task['status'] <= 0
|
||||
&& empty($task['summary']) === false
|
||||
) {
|
||||
$data[5] = __('Done');
|
||||
} else if ($task['utimestamp'] == 0
|
||||
&& empty($task['summary'])
|
||||
|
@ -534,7 +536,9 @@ class DiscoveryTaskList extends HTML
|
|||
$data[5] = __('Pending');
|
||||
}
|
||||
} else {
|
||||
if ($task['status'] <= 0 && $task['utimestamp'] > 0) {
|
||||
if ($task['status'] <= 0
|
||||
&& empty($task['summary']) === false
|
||||
) {
|
||||
$data[5] = '<span class="link review" onclick="show_review('.$task['id_rt'].',\''.$task['name'].'\')">';
|
||||
$data[5] .= __('Review');
|
||||
$data[5] .= '</span>';
|
||||
|
@ -1161,14 +1165,11 @@ class DiscoveryTaskList extends HTML
|
|||
'checked' => $data['agent']['checked'],
|
||||
];
|
||||
|
||||
$agent_id = $data['agent']['agent_id'];
|
||||
if (empty($agent_id)) {
|
||||
$agent_id = agents_get_agent_id($id, true);
|
||||
}
|
||||
// Ensure agent_id really exists.
|
||||
$agent_id = agents_get_agent_id($data['agent']['nombre'], true);
|
||||
|
||||
if ($agent_id > 0) {
|
||||
$tmp['disabled'] = 1;
|
||||
$tmp['checked'] = 1;
|
||||
$tmp['agent_id'] = $agent_id;
|
||||
}
|
||||
|
||||
|
@ -1189,6 +1190,10 @@ class DiscoveryTaskList extends HTML
|
|||
return $carry;
|
||||
}
|
||||
|
||||
if (empty($item['name'])) {
|
||||
$item['name'] = $item['nombre'];
|
||||
}
|
||||
|
||||
$tmp = [
|
||||
'name' => $item['name'],
|
||||
'id' => $id.'-'.$item['name'],
|
||||
|
@ -1196,13 +1201,10 @@ class DiscoveryTaskList extends HTML
|
|||
'checked' => $item['checked'],
|
||||
];
|
||||
|
||||
$agentmodule_id = $item['agentmodule_id'];
|
||||
if (empty($agentmodule_id)) {
|
||||
$agentmodule_id = modules_get_agentmodule_id(
|
||||
io_safe_input($item['name']),
|
||||
$agent_id
|
||||
);
|
||||
}
|
||||
$agentmodule_id = $agentmodule_id = modules_get_agentmodule_id(
|
||||
io_safe_input($item['name']),
|
||||
$agent_id
|
||||
);
|
||||
|
||||
if ($agentmodule_id > 0) {
|
||||
$tmp['disabled'] = 1;
|
||||
|
@ -1336,20 +1338,21 @@ class DiscoveryTaskList extends HTML
|
|||
}
|
||||
}
|
||||
|
||||
// Schedule execution.
|
||||
db_process_sql_update(
|
||||
'trecon_task',
|
||||
[
|
||||
'utimestamp' => 0,
|
||||
'status' => 1,
|
||||
'direct_report' => DISCOVERY_RESULTS,
|
||||
],
|
||||
['id_rt' => $id_task]
|
||||
);
|
||||
|
||||
if (empty($summary)) {
|
||||
$out .= __('No changes');
|
||||
$out .= __('No changes. Re-Scheduled');
|
||||
} else {
|
||||
// Schedule execution.
|
||||
db_process_sql_update(
|
||||
'trecon_task',
|
||||
[
|
||||
'utimestamp' => 0,
|
||||
'status' => 1,
|
||||
'direct_report' => DISCOVERY_RESULTS,
|
||||
],
|
||||
['id_rt' => $id_task]
|
||||
);
|
||||
$out .= __('Summary');
|
||||
$out .= __('Scheduled for creation');
|
||||
$out .= '<ul>';
|
||||
$out .= join('', $summary);
|
||||
$out .= '</ul>';
|
||||
|
|
|
@ -671,6 +671,7 @@ sub PandoraFMS::Recon::Base::report_scanned_agents($) {
|
|||
$self->call('update_progress', $progress);
|
||||
|
||||
my $name = safe_output($row->{'label'});
|
||||
my $checked = 0;
|
||||
my $data;
|
||||
eval {
|
||||
local $SIG{__DIE__};
|
||||
|
@ -680,8 +681,28 @@ sub PandoraFMS::Recon::Base::report_scanned_agents($) {
|
|||
$self->call('message', "ERROR JSON: $@", 3);
|
||||
}
|
||||
|
||||
# Agent could be 'not checked' unless all modules are selected.
|
||||
if (ref($data->{'modules'}) eq 'HASH') {
|
||||
my @map = map {
|
||||
my $name = $_->{'name'};
|
||||
$name = $_->{'nombre'} if is_empty($name);
|
||||
|
||||
if (is_enabled($_->{'checked'})
|
||||
&& $name ne 'Host Alive'
|
||||
) {
|
||||
$name;
|
||||
} else {}
|
||||
|
||||
} values %{$data->{'modules'}};
|
||||
|
||||
$checked = scalar @map;
|
||||
}
|
||||
|
||||
$checked = $data->{'agent'}{'checked'}
|
||||
if $checked < $data->{'agent'}{'checked'};
|
||||
|
||||
# Register target agent if enabled.
|
||||
if (is_enabled($data->{'agent'}{'checked'})
|
||||
if (is_enabled($checked)
|
||||
|| $force_creation
|
||||
) {
|
||||
my $parent_id;
|
||||
|
@ -691,9 +712,9 @@ sub PandoraFMS::Recon::Base::report_scanned_agents($) {
|
|||
|
||||
# Agent creation.
|
||||
my $agent_id = $data->{'agent'}{'agent_id'};
|
||||
my $agent_learning = 1;
|
||||
my $agent_learning;
|
||||
|
||||
if (defined($agent_id) || $agent_id > 0) {
|
||||
if (defined($agent_id) && $agent_id > 0) {
|
||||
$agent_learning = get_db_value(
|
||||
$self->{'dbh'},
|
||||
'SELECT modo FROM tagente WHERE id_agente = ?',
|
||||
|
@ -703,17 +724,36 @@ sub PandoraFMS::Recon::Base::report_scanned_agents($) {
|
|||
|
||||
if (!defined($agent_learning)) {
|
||||
# Agent id does not exists or is invalid.
|
||||
$agent_id = pandora_create_agent(
|
||||
$self->{'pa_config'}, $self->{'servername'}, $data->{'agent'}{'nombre'},
|
||||
$data->{'agent'}{'direccion'}, $self->{'task_data'}{'group_id'}, $parent_id,
|
||||
$os_id, $data->{'agent'}->{'description'},
|
||||
$data->{'agent'}{'interval'}, $self->{'dbh'},
|
||||
$data->{'agent'}{'timezone_offset'}
|
||||
|
||||
# Check if has been created by another process.
|
||||
$agent_id = get_db_value(
|
||||
$self->{'dbh'},
|
||||
'SELECT id_agente FROM tagente WHERE nombre = ?',
|
||||
safe_input($data->{'agent'}->{'name'})
|
||||
);
|
||||
|
||||
if (!defined($agent_id) || $agent_id <= 0) {
|
||||
$agent_id = pandora_create_agent(
|
||||
$self->{'pa_config'}, $self->{'servername'}, $data->{'agent'}{'nombre'},
|
||||
$data->{'agent'}{'direccion'}, $self->{'task_data'}{'group_id'}, $parent_id,
|
||||
$os_id, $data->{'agent'}->{'description'},
|
||||
$data->{'agent'}{'interval'}, $self->{'dbh'},
|
||||
$data->{'agent'}{'timezone_offset'}
|
||||
);
|
||||
|
||||
$agent_learning = 1;
|
||||
} else {
|
||||
# Read from effective agent_id.
|
||||
$agent_learning = get_db_value(
|
||||
$self->{'dbh'},
|
||||
'SELECT modo FROM tagente WHERE id_agente = ?',
|
||||
$agent_id
|
||||
);
|
||||
}
|
||||
|
||||
$data->{'agent'}{'agent_id'} = $agent_id;
|
||||
$agent_learning = 1;
|
||||
}
|
||||
}
|
||||
|
||||
$self->call('message', "Agent id: ".$data->{'agent'}{'agent_id'}, 5);
|
||||
|
||||
# Create selected modules.
|
||||
|
@ -721,6 +761,8 @@ sub PandoraFMS::Recon::Base::report_scanned_agents($) {
|
|||
foreach my $i (keys %{$data->{'modules'}}) {
|
||||
my $module = $data->{'modules'}{$i};
|
||||
|
||||
$module->{'name'} = $module->{'nombre'} if is_empty($module->{'name'});
|
||||
|
||||
# Do not create any modules if the agent is not in learning mode.
|
||||
next unless ($agent_learning == 1);
|
||||
|
||||
|
@ -729,8 +771,6 @@ sub PandoraFMS::Recon::Base::report_scanned_agents($) {
|
|||
next unless (is_enabled($module->{'checked'}) || $force_creation);
|
||||
}
|
||||
|
||||
delete $module->{'checked'};
|
||||
|
||||
$self->call('message', "[$agent_id] Module: ".$module->{'name'}, 5);
|
||||
|
||||
my $agentmodule_id = $module->{'agentmodule_id'};
|
||||
|
@ -748,24 +788,42 @@ sub PandoraFMS::Recon::Base::report_scanned_agents($) {
|
|||
if (!is_enabled($agentmodule_id)) {
|
||||
# Create.
|
||||
|
||||
# Delete unwanted fields.
|
||||
delete $module->{'agentmodule_id'};
|
||||
delete $module->{'checked'};
|
||||
|
||||
my $id_tipo_modulo = $module->{'id_tipo_modulo'};
|
||||
$id_tipo_modulo = get_module_id($self->{'dbh'}, $module->{'type'})
|
||||
if is_empty($id_tipo_modulo);
|
||||
|
||||
my $description = safe_output($module->{'description'});
|
||||
$description = '' if is_empty($description);
|
||||
|
||||
if (is_enabled($module->{'__module_component'})) {
|
||||
# Module from network component.
|
||||
delete $module->{'__module_component'};
|
||||
$agentmodule_id = pandora_create_module_from_network_component(
|
||||
$self->{'pa_config'},
|
||||
$module,
|
||||
# Send a copy, not original, because of 'deletes'
|
||||
{
|
||||
%{$module},
|
||||
'name' => safe_input($module->{'name'}),
|
||||
},
|
||||
$agent_id,
|
||||
$self->{'dbh'}
|
||||
);
|
||||
|
||||
# Restore.
|
||||
$module->{'__module_component'} = 1;
|
||||
} else {
|
||||
# Create module - Direct.
|
||||
$agentmodule_id = pandora_create_module_from_hash(
|
||||
$self->{'pa_config'},
|
||||
{
|
||||
'id_tipo_modulo' => get_module_id($self->{'dbh'}, $module->{'type'}),
|
||||
'id_tipo_modulo' => $id_tipo_modulo,
|
||||
'id_modulo' => $module->{'id_modulo'},
|
||||
'nombre' => safe_input($module->{'name'}),
|
||||
'descripcion' => '',
|
||||
'descripcion' => safe_input($description),
|
||||
'id_agente' => $agent_id,
|
||||
'ip_target' => $data->{'agent'}{'direccion'}
|
||||
},
|
||||
|
@ -773,6 +831,9 @@ sub PandoraFMS::Recon::Base::report_scanned_agents($) {
|
|||
);
|
||||
}
|
||||
|
||||
# Restore.
|
||||
$module->{'checked'} = 1;
|
||||
|
||||
# Store.
|
||||
$data->{'modules'}{$i}{'agentmodule_id'} = $agentmodule_id;
|
||||
|
||||
|
|
|
@ -470,7 +470,9 @@ sub exec_network_module ($$$$) {
|
|||
my $retries = $module->{'max_retries'};
|
||||
my $target_os = pandora_get_os($dbh, $module->{'custom_string_2'});
|
||||
|
||||
if ($module->{'custom_string_2'} eq "inherited" ) {
|
||||
if (defined($module->{'custom_string_2'})
|
||||
&& $module->{'custom_string_2'} eq "inherited"
|
||||
) {
|
||||
$target_os = $agent_row->{'id_os'};
|
||||
} elsif (!defined($target_os) || "$target_os" eq '0') {
|
||||
$target_os = $agent_row->{'id_os'};
|
||||
|
|
Loading…
Reference in New Issue