Merge branch 'ent-3621-Discover-vista-de-tasks-bloqueada-y-duplicada' into 'develop'

fix discover task view

See merge request artica/pandorafms!2223

Former-commit-id: f8c236623756ef6e76d54cf4ab905f706df1ea84
This commit is contained in:
Alejandro Fraguas 2019-03-01 12:16:08 +01:00
commit a5c3136321

View File

@ -306,7 +306,7 @@ class DiscoveryTaskList extends Wizard
return false;
}
// Get all recon servers.
// Get all discovery servers.
$servers = db_get_all_rows_sql('SELECT * FROM tserver WHERE server_type = 3');
if ($servers === false) {
$servers = [];
@ -337,28 +337,8 @@ class DiscoveryTaskList extends Wizard
}
}
foreach ($servers as $serverItem) {
$id_server = $serverItem['id_server'];
$server_name = servers_get_name($id_server);
$recon_tasks = db_get_all_rows_sql('SELECT * FROM trecon_task');
$user_groups = implode(',', array_keys(users_get_groups()));
$defined_tasks = db_get_all_rows_filter(
'tuser_task_scheduled',
'id_grupo IN ('.$user_groups.')'
);
if (isset($tasks_console) === true
&& is_array($tasks_console) === true
) {
foreach ($tasks_console as $key => $value) {
$value['parameters'] = unserialize(
$value['parameters']
);
$value['type'] = 'Cron';
array_push($recon_tasks, $value);
}
}
// Show network tasks for Recon Server.
if ($recon_tasks === false) {
@ -384,31 +364,52 @@ class DiscoveryTaskList extends Wizard
$table->head[1] = __('Task name');
$table->align[1] = 'left';
$table->head[2] = __('Interval');
$table->head[2] = __('Server name');
$table->align[2] = 'left';
$table->head[3] = __('Network');
$table->head[3] = __('Interval');
$table->align[3] = 'left';
$table->head[4] = __('Status');
$table->head[4] = __('Network');
$table->align[4] = 'left';
$table->head[5] = __('Task type');
$table->head[5] = __('Status');
$table->align[5] = 'left';
$table->head[6] = __('Progress');
$table->head[6] = __('Task type');
$table->align[6] = 'left';
$table->head[7] = __('Updated at');
$table->head[7] = __('Progress');
$table->align[7] = 'left';
$table->head[8] = __('Operations');
$table->head[8] = __('Updated at');
$table->align[8] = 'left';
$table->head[9] = __('Operations');
$table->align[9] = 'left';
foreach ($recon_tasks as $task) {
$data = [];
$server_name = servers_get_name($task['id_recon_server']);
if ($task['disabled'] == 0) {
// By default.
$subnet = $task['subnet'];
// Exceptions: IPAM.
$ipam = false;
if ($task['id_recon_script'] != null) {
$recon_script_name = db_get_value('name', 'trecon_script', 'id_recon_script', $task['id_recon_script']);
if (io_safe_output($recon_script_name) == 'IPAM Recon'
&& enterprise_installed()
) {
$subnet_obj = json_decode($task['macros'], true);
$subnet = $subnet_obj['1']['value'];
$tipam_task_id = db_get_value('id', 'tipam_network', 'id_recon_task', $task['id_rt']);
$ipam = true;
}
}
if ($task['disabled'] == 0 && $server_name !== '') {
$data[0] = '<a href="'.ui_get_full_url(
'index.php?sec=gservers&sec2=godmode/servers/discovery&wiz=tasklist&server_id='.$id_server.'&force='.$task['id_rt']
).'">';
@ -425,54 +426,51 @@ class DiscoveryTaskList extends Wizard
$data[1] = '<b>'.$task['name'].'</b>';
$data[2] = $server_name;
if ($task['interval_sweep'] > 0) {
$data[2] = human_time_description_raw(
$data[3] = human_time_description_raw(
$task['interval_sweep']
);
} else {
$data[2] = __('Manual');
$data[3] = __('Manual');
}
if ($task['id_recon_script'] == 0) {
$data[3] = $task['subnet'];
if ($task['id_recon_script'] == 0 || $ipam === true) {
$data[4] = $subnet;
} else {
$data[3] = '-';
$data[4] = '-';
}
if ($task['status'] <= 0) {
$data[4] = __('Done');
$data[5] = __('Done');
} else {
$data[4] = __('Pending');
$data[5] = __('Pending');
}
if ($task['id_recon_script'] == 0) {
// Discovery NetScan.
$data[5] = html_print_image(
$data[6] = html_print_image(
'images/network.png',
true,
['title' => __('Discovery NetScan')]
).'&nbsp;&nbsp;';
$data[5] .= network_profiles_get_name(
$data[6] .= network_profiles_get_name(
$task['id_network_profile']
);
} else {
// APP recon task.
$data[5] = html_print_image(
$data[6] = html_print_image(
'images/plugin.png',
true
).'&nbsp;&nbsp;';
$data[5] .= db_get_sql(
sprintf(
'SELECT name FROM trecon_script WHERE id_recon_script = %d',
$task['id_recon_script']
)
);
$data[6] .= $recon_script_name;
}
if ($task['status'] <= 0 || $task['status'] > 100) {
$data[6] = '-';
$data[7] = '-';
} else {
$data[6] = progress_bar(
$data[7] = progress_bar(
$task['status'],
100,
20,
@ -482,12 +480,12 @@ class DiscoveryTaskList extends Wizard
}
if ($task['utimestamp'] > 0) {
$data[7] = ui_print_timestamp(
$data[8] = ui_print_timestamp(
$task['utimestamp'],
true
);
} else {
$data[7] = __('Not executed yet');
$data[8] = __('Not executed yet');
}
if (check_acl(
@ -496,8 +494,25 @@ class DiscoveryTaskList extends Wizard
'PM'
)
) {
// Check if is a H&D, Cloud or Application.
$data[8] = '<a href="'.ui_get_full_url(
if ($ipam === true) {
$data[9] = '<a href="'.ui_get_full_url(
sprintf(
'index.php?sec=godmode/extensions&sec2=enterprise/extensions/ipam&action=edit&id=%d',
$tipam_task_id
)
).'">'.html_print_image(
'images/config.png',
true
).'</a>';
$data[9] .= '<a href="'.ui_get_full_url(
'index.php?sec=godmode/extensions&sec2=enterprise/extensions/ipam&action=delete&id='.$tipam_task_id
).'" onClick="if (!confirm(\' '.__('Are you sure?').'\')) return false;">'.html_print_image(
'images/cross.png',
true
).'</a>';
} else {
// Check if is a H&D, Cloud or Application or IPAM.
$data[9] = '<a href="'.ui_get_full_url(
sprintf(
'index.php?sec=gservers&sec2=godmode/servers/discovery&%s&task=%d',
$this->getTargetWiz($task),
@ -507,14 +522,15 @@ class DiscoveryTaskList extends Wizard
'images/config.png',
true
).'</a>';
$data[8] .= '<a href="'.ui_get_full_url(
$data[9] .= '<a href="'.ui_get_full_url(
'index.php?sec=gservers&sec2=godmode/servers/discovery&wiz=tasklist&delete=1&task='.$task['id_rt']
).'" onClick="if (!confirm(\' '.__('Are you sure?').'\')) return false;">'.html_print_image(
'images/cross.png',
true
).'</a>';
}
} else {
$data[8] = '';
$data[9] = '';
}
array_push($table->data, $data);
@ -530,7 +546,6 @@ class DiscoveryTaskList extends Wizard
unset($table);
}
}
return true;
}