$_aux_agents = Asset_host::get_related_hids_agents($conn, $asset_id, $sensor_id); $agent_key = md5(strtoupper($sensor_id) . '#' . $agent_id); unset($_aux_agents[$agent_key]); if (!empty($_aux_agents)) { $validation_errors['asset_id'] = sprintf(_("Unable to connect HIDS agent to '%s'. This asset already has an agent deployed. If you want to deploy a new agent, please review <a class=\"bold_red\" href=\"https://www.alienvault.com/help/redirect/usm/connect_agent\" target=\"_blank\">how to manage agent connections</a> and try again"), Asset_host::get_name_by_id($conn, $asset_id)); } $db->close(); } if (is_array($validation_errors) && !empty($validation_errors)) { $validation_errors['html_errors'] = "<div style='text-align: left;'>" . _('The following errors occurred') . ":</div>\n <div style='padding-left:15px; text-align: left;'>" . implode('<br/>', $validation_errors) . "</div>"; $data['status'] = 'error'; $data['data'] = $validation_errors; } else { $data['status'] = 'success'; $data['data'] = _('Your changes have been saved'); try { Ossec_agent::link_to_asset($sensor_id, $agent_id, $asset_id); $db = new ossim_db(); $conn = $db->connect(); $agents = Asset_host::get_related_hids_agents($conn, $asset_id, $sensor_id); $agent_key = md5(strtoupper($sensor_id) . '#' . $agent_id); $agent_info = array('ip_cidr' => $agents[$agent_key]['ip_cidr'], 'host_id' => $asset_id); $data['asset'] = array('id' => $asset_id, 'name' => Asset_host::get_name_by_id($conn, $asset_id), 'actions' => Ossec_agent::get_actions($agent_id, $agent_info)); $db->close(); } catch (Exception $e) { $data['status'] = 'error'; $data['data'] = _('An unexpected error occurred. Unable to connect asset to HIDS agent. Please try again') . '.<br/><br/>' . sprintf(_('Reason: %s'), $e->getMessage()); } } echo json_encode($data); exit;
$e_msg = _('Error! Sensor not allowed'); Av_exception::throw_error(Av_exception::USER_ERROR, $e_msg); } } else { $e_msg = ossim_get_error_clean(); Av_exception::throw_error(Av_exception::USER_ERROR, $e_msg); } $agents = Ossec_agent::get_list($sensor_id); $data = array(); if (is_array($agents) && !empty($agents)) { foreach ($agents as $agent_id => $a_data) { if (empty($a_data)) { continue; } $a_unique_id = md5($agent_id); $agent_actions = Ossec_agent::get_actions($agent_id, $a_data); if (!empty($a_data['host_id'])) { $asset_name = Asset_host::get_name_by_id($conn, $a_data['host_id']); } else { $asset_name = '-'; } //Normalize status description (See asset list filters) if ($a_data['status']['id'] == 1) { $a_data['status']['descr'] = 'Disconnected'; } $t_data = array("DT_RowId" => 'cont_agent_' . $agent_id, "DT_RowData" => array('agent_key' => $a_unique_id, 'asset_id' => $a_data['host_id'], 'agent_status' => $a_data['status']), '', $agent_id, $a_data['name'], $asset_name, $a_data['ip_cidr'], "-", "-", $a_data['status']['descr'], $agent_actions); $data[] = $t_data; } } } catch (Exception $e) { $db->close();
$data['status'] = 'error'; $data['data'] = $validation_errors; } else { $ret = NULL; $data['status'] = 'success'; try { $new_agent = Ossec_agent::create($sensor_id, $agent_name, $ip_cidr, $asset_id); //If ossec-remoted is not running, we have to restart Ossec Server $ossec_status = Ossec_control::execute_action($sensor_id, 'status'); if ('UP' !== $ossec_status['general_status']['ossec-remoted']) { Ossec_control::execute_action($sensor_id, 'restart'); } if (is_array($new_agent) && !empty($new_agent)) { $agent_id = $new_agent['id']; $agent_info = array('name' => $new_agent['name'], 'ip_cidr' => $new_agent['ip_cidr'], 'status' => $new_agent['status']); $agent_actions = Ossec_agent::get_actions($agent_id, $new_agent); $data['data'] = _("HIDS agent has been created. To deploy the agent, please choose one of the options under the 'Actions' column") . "###" . $agent_id . "###"; $a_unique_id = md5($agent_id); if (valid_hex32($new_agent['host_id'])) { $db = new Ossim_db(); $conn = $db->connect(); $asset_name = Asset_host::get_name_by_id($conn, $new_agent['host_id']); $db->close(); } else { $asset_name = '-'; } //Normalize status description (See asset list filters) if ($new_agent['status']['id'] == 1) { $new_agent['status']['descr'] = 'Disconnected'; } $agent_elem = array("DT_RowId" => 'cont_agent_' . $agent_id, "DT_RowData" => array('agent_key' => $a_unique_id, 'asset_id' => $new_agent['host_id'], 'agent_status' => $new_agent['status']), '', $agent_id, $new_agent['name'], $asset_name, $new_agent['ip_cidr'], "-", "-", $new_agent['status']['descr'], $agent_actions);