Пример #1
0
 public function asn(Request $request, $as_number)
 {
     // lets only use the AS number.
     $as_number = $this->ipUtils->normalizeInput($as_number);
     $asnData = ASN::with('emails')->where('asn', $as_number)->first();
     $allocation = $this->ipUtils->getAllocationEntry($as_number);
     $ianaAssignment = $this->ipUtils->getIanaAssignmentEntry($as_number);
     if (is_null($asnData) === true && $ianaAssignment === false) {
         $data = $this->makeStatus('Could not find ASN', false);
         return $this->respond($data);
     }
     $output['asn'] = $as_number;
     $output['name'] = isset($asnData->name) ? $asnData->name : null;
     $output['description_short'] = isset($asnData->description) ? $asnData->description : null;
     $output['description_full'] = isset($asnData->description_full) ? $asnData->description_full : null;
     $output['country_code'] = isset($asnData->counrty_code) ? $asnData->counrty_code : null;
     $output['website'] = isset($asnData->website) ? $asnData->website : null;
     $output['email_contacts'] = isset($asnData->email_contacts) ? $asnData->email_contacts : null;
     $output['abuse_contacts'] = isset($asnData->abuse_contacts) ? $asnData->abuse_contacts : null;
     $output['looking_glass'] = isset($asnData->looking_glass) ? $asnData->looking_glass : null;
     $output['traffic_estimation'] = isset($asnData->traffic_estimation) ? $asnData->traffic_estimation : null;
     $output['traffic_ratio'] = isset($asnData->traffic_ratio) ? $asnData->traffic_ratio : null;
     $output['owner_address'] = isset($asnData->owner_address) ? $asnData->owner_address : [];
     $output['rir_allocation']['rir_name'] = empty($allocation->rir_name) !== true ? $allocation->rir_name : null;
     $output['rir_allocation']['country_code'] = isset($allocation->country_code) ? $allocation->country_code : null;
     $output['rir_allocation']['date_allocated'] = isset($allocation->date_allocated) ? $allocation->date_allocated . ' 00:00:00' : null;
     $output['rir_allocation']['allocation_status'] = isset($allocation->status) ? $allocation->status : null;
     $output['iana_assignment']['assignment_status'] = $ianaAssignment->status;
     $output['iana_assignment']['description'] = $ianaAssignment->description;
     $output['iana_assignment']['whois_server'] = $ianaAssignment->whois_server;
     $output['iana_assignment']['date_assigned'] = $ianaAssignment->date_assigned;
     // override the ASN data with assignment data if there is no ASNData
     if (is_null($asnData) === true) {
         $output['name'] = 'IANA-' . strtoupper($ianaAssignment->status);
         $output['description_short'] = $ianaAssignment->description;
         $output['description_full'] = $ianaAssignment->description;
         $output['email_contacts'] = ['*****@*****.**'];
         $output['abuse_contacts'] = ['*****@*****.**'];
         $output['owner_address'] = ['Internet Assigned Numbers Authority', '12025 Waterfront Drive, Suite 300', 'Los Angeles CA 90094', 'USA'];
     }
     if ($request->has('with_ixs') === true) {
         $output['internet_exchanges'] = IXMember::getMembers($as_number);
     }
     if ($request->has('with_peers') === true) {
         $output['peers'] = ASN::getPeers($as_number);
     }
     if ($request->has('with_prefixes') === true) {
         $output['prefixes'] = ASN::getPrefixes($as_number);
     }
     if ($request->has('with_upstreams') === true) {
         $output['upstreams'] = ASN::getUpstreams($as_number);
     }
     if ($request->has('with_downstreams') === true) {
         $output['downstreams'] = ASN::getDownstreams($as_number);
     }
     if ($request->has('with_raw_whois') === true) {
         $output['raw_whois'] = isset($asnData->raw_whois) ? $asnData->raw_whois : null;
     }
     $output['date_updated'] = isset($asnData->updated_at) ? (string) $asnData->updated_at : null;
     return $this->sendData($output);
 }