示例#1
0
 public function search(Request $request)
 {
     $queryTerm = $request->get('query_term');
     $queryTerm = trim(str_replace(['/', '?', '!', ':', ',', '\'', '-', '_', '.', '+'], "", strtolower($queryTerm)));
     $elasticQuery['filtered']['query'] = ['bool' => ['should' => [['wildcard' => ['name' => ['value' => '*' . $queryTerm . '*', 'boost' => 2]]], ['wildcard' => ['description' => ['value' => '*' . $queryTerm . '*']]], ['wildcard' => ['name_full' => ['value' => '*' . $queryTerm . '*']]], ['multi_match' => ['query' => $queryTerm, 'fields' => ['asn^5']]]], 'minimum_should_match' => 1]];
     $asnSort = [['asn' => ['order' => 'asc']]];
     $ipSort = [['ip' => ['order' => 'asc']]];
     $asns = ASN::searchByQuery($elasticQuery, $aggregations = null, $sourceFields = null, $limit = 100, $offset = null, $asnSort);
     $ipv4Prefixes = IPv4PrefixWhois::searchByQuery($elasticQuery, $aggregations = null, $sourceFields = null, $limit = 200, $offset = null, $ipSort);
     $ipv6Prefixes = IPv6PrefixWhois::searchByQuery($elasticQuery, $aggregations = null, $sourceFields = null, $limit = 200, $offset = null, $ipSort);
     $ixs = IX::searchByQuery($elasticQuery, $aggregations = null, $sourceFields = null, $limit = 200, $offset = null, $ipSort);
     $data['asns'] = [];
     foreach ($asns as $asn) {
         $asnData['asn'] = $asn->asn;
         $asnData['name'] = $asn->name;
         $asnData['description'] = $asn->description;
         $asnData['country_code'] = empty($asn->counrty_code) !== true ? $asn->counrty_code : null;
         $asnData['email_contacts'] = $asn->email_contacts;
         $asnData['abuse_contacts'] = $asn->abuse_contacts;
         $asnData['rir_name'] = $asn->rir->name;
         $data['asns'][] = $asnData;
     }
     $data['ipv4_prefixes'] = [];
     foreach ($ipv4Prefixes as $prefix) {
         $prefixData['prefix'] = $prefix->ip . '/' . $prefix->cidr;
         $prefixData['ip'] = $prefix->ip;
         $prefixData['cidr'] = $prefix->cidr;
         $prefixData['name'] = $prefix->name;
         $prefixData['country_code'] = empty($prefix->counrty_code) !== true ? $prefix->counrty_code : null;
         $prefixData['description'] = $prefix->description;
         $prefixData['email_contacts'] = $prefix->email_contacts;
         $prefixData['abuse_contacts'] = $prefix->abuse_contacts;
         $prefixData['rir_name'] = $prefix->rir->name;
         $prefixData['parent_prefix'] = $prefix->parent_ip . '/' . $prefix->parent_cidr;
         $prefixData['parent_ip'] = $prefix->parent_ip;
         $prefixData['parent_cidr'] = $prefix->parent_cidr;
         $data['ipv4_prefixes'][] = $prefixData;
     }
     $data['ipv6_prefixes'] = [];
     foreach ($ipv6Prefixes as $prefix) {
         $prefixData['prefix'] = $prefix->ip . '/' . $prefix->cidr;
         $prefixData['ip'] = $prefix->ip;
         $prefixData['cidr'] = $prefix->cidr;
         $prefixData['name'] = $prefix->name;
         $prefixData['country_code'] = empty($prefix->counrty_code) !== true ? $prefix->counrty_code : null;
         $prefixData['description'] = $prefix->description;
         $prefixData['email_contacts'] = $prefix->email_contacts;
         $prefixData['abuse_contacts'] = $prefix->abuse_contacts;
         $prefixData['rir_name'] = $prefix->rir->name;
         $prefixData['parent_prefix'] = $prefix->parent_ip . '/' . $prefix->parent_cidr;
         $prefixData['parent_ip'] = $prefix->parent_ip;
         $prefixData['parent_cidr'] = $prefix->parent_cidr;
         $data['ipv6_prefixes'][] = $prefixData;
     }
     $data['internet_exchanges'] = [];
     foreach ($ixs as $ix) {
         $ixData['ix_id'] = $ix->id;
         $ixData['name'] = $ix->name;
         $ixData['name_full'] = $ix->name_full;
         $ixData['country_code'] = $ix->counrty_code;
         $ixData['city'] = $ix->city;
         $data['internet_exchanges'][] = $ixData;
     }
     return $this->sendData($data);
 }