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(); } }