get($ip); } catch (Exception $e) { return null; } $data = array(); // Continent if (isset($entry['continent']['code'])) { $data['continent_code'] = $entry['continent']['code']; } // Country if (isset($entry['country']['iso_code'])) { $data['country_code'] = $entry['country']['iso_code']; $data['country_name'] = $entry['country']['names']['en']; // State for US if ($data['country_code'] === 'US' && isset($entry['subdivisions'][0]['iso_code'])) { $data['state_code'] = $entry['subdivisions'][0]['iso_code']; $data['state_name'] = $entry['subdivisions'][0]['names']['en']; } // FIXME: subdivisions for UK during sport events else if ($data['country_code'] === 'GB' && isset($entry['subdivisions'][0]['iso_code'])) { $data['sub_code'] = $entry['subdivisions'][0]['iso_code']; } } if (isset($entry['city']['names']['en'])) { $data['city_name'] = $entry['city']['names']['en']; } if (empty($data)) { return null; } return $data; } public static function get_asn($ip) { if (!$ip) { return null; } if (self::$mmdb_asn === null) { self::$mmdb_asn = self::load_db(self::$db_file_asn); } if (!self::$mmdb_asn) { return null; } try { $entry = self::$mmdb_asn->get($ip); } catch (Exception $e) { return null; } $data = array(); if (isset($entry['autonomous_system_number'])) { $data['asn'] = $entry['autonomous_system_number']; } if (isset($entry['autonomous_system_organization'])) { $data['aso'] = $entry['autonomous_system_organization']; } if (empty($data)) { return null; } return $data; } }