Beispiel #1
0
 public function getIanaAssignmentEntry($input)
 {
     $type = $this->getInputType($input);
     $input = $this->normalizeInput($input);
     // If the input is an IP address lets convert it to dec
     if ($type === 4 || $type === 6) {
         $input = $this->ip2dec($input);
     }
     $assignments = IanaAssignment::where('type', $type)->where('start', '<=', $input)->where('end', '>=', $input)->get();
     $smallestAssignment = false;
     foreach ($assignments as $assignment) {
         if ($smallestAssignment === false) {
             $smallestAssignment = $assignment;
             continue;
         }
         $assignmentDiff = $assignment->end - $assignment->start;
         $smallestAssignmentDiff = $smallestAssignment->end - $smallestAssignment->start;
         if ($smallestAssignmentDiff > $assignmentDiff) {
             $smallestAssignment = $assignment;
         }
     }
     return $smallestAssignment;
 }
 private function loadAsnAssignments()
 {
     $this->cli->br()->comment('Adding ASN IANA Assignment Entries');
     $assignments = [];
     foreach ($this->asnAssignmenstUrls as $url) {
         $assignments = array_merge($assignments, $this->downloadCsv($url));
     }
     foreach ($assignments as $assignment) {
         if (empty($assignment['WHOIS']) === true) {
             $assignment['WHOIS'] = 'whois.iana.org';
         }
         $parts = explode('-', $assignment['Number']);
         $start = trim($parts[0]);
         $end = isset($parts[1]) ? trim($parts[1]) : trim($parts[0]);
         $description = $assignment['Description'];
         if (empty(trim($assignment['Reference'])) !== true) {
             $description .= ' ' . trim($assignment['Reference']);
         }
         if (stripos($assignment['Description'], 'reserved') !== false) {
             $status = 'reserved';
         } else {
             if (stripos($assignment['Description'], 'assigned') !== false) {
                 $status = 'assigned';
             } else {
                 $status = 'unknown';
             }
         }
         // Who the hell names these keys :/
         $date = $assignment["Registration\n        Date"];
         $ianaAssignment = new IanaAssignment();
         $ianaAssignment->type = 'asn';
         $ianaAssignment->start = $start;
         $ianaAssignment->end = $end;
         $ianaAssignment->whois_server = $assignment['WHOIS'];
         $ianaAssignment->description = $description;
         $ianaAssignment->status = $status;
         $ianaAssignment->date_allocated = $date ? substr($date, 0, 4) . "-" . substr($date, 4, 2) . "-" . substr($date, 6, 2) : null;
         $ianaAssignment->save();
     }
 }