function get_assets($conn, $id, $type, $host_types) { $filters = array('where' => 'sensor_properties.has_nagios = 1', 'order_by' => 'priority desc'); list($nagios_list, $nagios_total) = Av_sensor::get_list($conn, $filters); $sensor = NULL; $sensors = array(); $type = strtolower($type); $id = strtoupper($id); // in_assets first $in_assets = is_in_assets($conn, $id, $type); //Host, sensor or server if (in_array($type, $host_types)) { $table = $type; if ($type == 'host') { $what = 'host_id'; $table = 'host_ip'; } else { $what = 'id'; } $query = "SELECT INET6_NTOA(ip) AS ip FROM {$table} WHERE {$what} = UNHEX(?) LIMIT 1"; $params = array($id); $rs = $conn->Execute($query, $params); if ($rs) { $ips = $rs->fields['ip']; } // Related sensors if ($type == 'host') { $sensors = Asset_host_sensors::get_sensors_by_id($conn, $id); } elseif ($type == 'sensor') { $sensors[$id] = $ips; } else { $s_id = Av_sensor::get_id_by_ip($conn, Util::get_default_admin_ip()); $sensors[$s_id] = Util::get_default_admin_ip(); } } elseif ($type == 'net') { $query = "SELECT ips FROM net WHERE id = UNHEX(?)"; $params = array($id); $rs = $conn->Execute($query, $params); if ($rs) { $ips = $rs->fields['ips']; } // Related sensors $sensors = Asset_net_sensors::get_sensors_by_id($conn, $id); } elseif ($type == 'net_group' || $type == 'netgroup') { $query = "SELECT hex(ngr.net_id) as net_id, n.ips FROM net_group_reference AS ngr, net AS n\n WHERE ngr.net_group_id = UNHEX(?) AND ngr.net_id = n.id"; $net_ids = array($id); $params = $net_ids; $rs = $conn->Execute($query, $params); if ($rs) { $ipng = array(); if (!$rs->EOF) { $net_ids = array(); } while (!$rs->EOF) { $ipng[] = $rs->fields['ips']; $net_ids[] = $rs->fields['net_id']; $rs->MoveNext(); } $ips = count($ipng) > 0 ? implode(",", $ipng) : "'0.0.0.0/0'"; if (count($ipng) == 0) { $in_assets = 0; } } // Related sensors foreach ($net_ids as $net_id) { $_sensors_aux = Asset_net_sensors::get_sensors_by_id($conn, $net_id); foreach ($_sensors_aux as $sensor_id => $sensor_data) { $sensors[$sensor_id] = $sensor_data['ip']; } } } elseif ($type == 'host_group' || $type == 'hostgroup') { $query = "SELECT hex(hg.host_id) as host_id, INET6_NTOA(hi.ip) AS ip FROM host_group_reference hg, host_ip hi\n WHERE hi.host_id=hg.host_id AND hg.host_group_id = UNHEX(?)"; $host_ids = array($id); $params = $host_ids; $rs = $conn->Execute($query, $params); if ($rs) { $iphg = array(); if (!$rs->EOF) { $host_ids = array(); } while (!$rs->EOF) { $iphg[] = "'" . $rs->fields['ip'] . "'"; $host_ids[] = $rs->fields['host_id']; $rs->MoveNext(); } $ips = count($iphg) > 0 ? implode(',', $iphg) : "'0.0.0.0'"; if (count($iphg) == 0) { $in_assets = 0; } } // Related sensors foreach ($host_ids as $host_id) { $_sensors_aux = Asset_host_sensors::get_sensors_by_id($conn, $host_id); foreach ($_sensors_aux as $sensor_id => $sensor_data) { $sensors[$sensor_id] = $sensor_data['ip']; } } } //Getting first Nagios sensor (By priority) if ($nagios_total > 0) { foreach ($nagios_list as $n_sensor_id => $n_sensor_data) { if (array_key_exists($n_sensor_id, $sensors)) { $sensor = $n_sensor_data['ip']; break; } } } return array($id, $sensor, $type, $ips, $in_assets); }
function get_assets($conn, $name, $type, $host_types) { // in_assets first $in_assets = is_in_assets($conn, $name, $type); // Asset values $ips = $name; $what = "name"; if (in_array($type, $host_types)) { if ($type == "host") { $what = "hostname"; } $query = "select ip from {$type} where {$what} = ?"; $params = array($name); if ($rs3 =& $conn->Execute($query, $params)) { $name = $rs3->fields["ip"]; if ($rs3->EOF) { $in_assets = 0; } } // Related sensor $sensor = $name; if ($type == "host") { require_once 'classes/Host.inc'; $sensors = Host::get_related_sensors($conn, $name, false); $sensor = $sensors[0] != "" ? $sensors[0] : $name; } } elseif ($type == "net") { $query = "select ips from net where name = ?"; $params = array($name); if ($rs3 =& $conn->Execute($query, $params)) { $ips = $rs3->fields["ips"]; if ($rs3->EOF) { $in_assets = 0; } } // related sensor require_once 'classes/Net.inc'; $sensors = Net::get_related_sensors($conn, $name); $sensor = $sensors[0] != "" ? $sensors[0] : ""; } elseif ($type == "host_group") { $query = "select host_ip from host_group_reference where host_group_name = ?"; $params = array($name); if ($rs3 =& $conn->Execute($query, $params)) { $iphg = array(); while (!$rs3->EOF) { $iphg[] = "'" . $rs3->fields["host_ip"] . "'"; $rs3->MoveNext(); } $ips = count($iphg) > 0 ? implode(",", $iphg) : "'0.0.0.0'"; if (count($iphg) == 0) { $in_assets = 0; } } // related sensor{ require_once 'classes/Host_group.inc'; $sensors = Host_group::get_related_sensors($conn, $name); $sensor = $sensors[0] != "" ? $sensors[0] : $name; } return array($name, $sensor, $type, $ips, $what, $in_assets); }