use of com.maxmind.geoip2.record.Location in project nutch by apache.
the class GeoIPDocumentCreator method createDocFromInsightsService.
public static NutchDocument createDocFromInsightsService(String serverIp, NutchDocument doc, WebServiceClient client) throws UnknownHostException, IOException, GeoIp2Exception {
addIfNotNull(doc, "ip", serverIp);
InsightsResponse response = client.insights(InetAddress.getByName(serverIp));
// CityResponse response = client.city(InetAddress.getByName(serverIp));
City city = response.getCity();
// 'Minneapolis'
addIfNotNull(doc, "cityName", city.getName());
// 50
addIfNotNull(doc, "cityConfidence", city.getConfidence());
addIfNotNull(doc, "cityGeoNameId", city.getGeoNameId());
Continent continent = response.getContinent();
addIfNotNull(doc, "continentCode", continent.getCode());
addIfNotNull(doc, "continentGeoNameId", continent.getGeoNameId());
addIfNotNull(doc, "continentName", continent.getName());
Country country = response.getCountry();
// 'US'
addIfNotNull(doc, "countryIsoCode", country.getIsoCode());
// 'United States'
addIfNotNull(doc, "countryName", country.getName());
// 99
addIfNotNull(doc, "countryConfidence", country.getConfidence());
addIfNotNull(doc, "countryGeoName", country.getGeoNameId());
Location location = response.getLocation();
// 44.9733,
addIfNotNull(doc, "latLon", location.getLatitude() + "," + location.getLongitude());
// -93.2323
// 3
addIfNotNull(doc, "accRadius", location.getAccuracyRadius());
// 'America/Chicago'
addIfNotNull(doc, "timeZone", location.getTimeZone());
addIfNotNull(doc, "metroCode", location.getMetroCode());
Postal postal = response.getPostal();
// '55455'
addIfNotNull(doc, "postalCode", postal.getCode());
// 40
addIfNotNull(doc, "postalConfidence", postal.getConfidence());
RepresentedCountry rCountry = response.getRepresentedCountry();
addIfNotNull(doc, "countryType", rCountry.getType());
Subdivision subdivision = response.getMostSpecificSubdivision();
// 'Minnesota'
addIfNotNull(doc, "subDivName", subdivision.getName());
// 'MN'
addIfNotNull(doc, "subDivIdoCode", subdivision.getIsoCode());
// 90
addIfNotNull(doc, "subDivConfidence", subdivision.getConfidence());
addIfNotNull(doc, "subDivGeoNameId", subdivision.getGeoNameId());
Traits traits = response.getTraits();
addIfNotNull(doc, "autonSystemNum", traits.getAutonomousSystemNumber());
addIfNotNull(doc, "autonSystemOrg", traits.getAutonomousSystemOrganization());
addIfNotNull(doc, "domain", traits.getDomain());
addIfNotNull(doc, "isp", traits.getIsp());
addIfNotNull(doc, "org", traits.getOrganization());
addIfNotNull(doc, "userType", traits.getUserType());
// for better results, users should upgrade to
// https://www.maxmind.com/en/solutions/geoip2-enterprise-product-suite/anonymous-ip-database
addIfNotNull(doc, "isAnonProxy", String.valueOf(traits.isAnonymousProxy()));
return doc;
}
use of com.maxmind.geoip2.record.Location in project arctic-sea by 52North.
the class StatisticsLocationUtil method ip2SpatialData.
private Map<String, Object> ip2SpatialData(InetAddress ip) {
if (!enabled) {
return null;
}
if (reader == null) {
LOG.warn("Location database is not initialized. Exiting.");
return null;
}
try {
Map<String, Object> holder = new HashMap<>(3);
if (dbType == LocationDatabaseType.COUNTRY) {
Country country = reader.country(ip).getCountry();
holder.put(ObjectEsParameterFactory.GEOLOC_COUNTRY_CODE.getName(), country.getIsoCode());
} else {
CityResponse city = reader.city(ip);
Location loc = city.getLocation();
holder.put(ObjectEsParameterFactory.GEOLOC_COUNTRY_CODE.getName(), city.getCountry().getIsoCode());
holder.put(ObjectEsParameterFactory.GEOLOC_CITY_NAME.getName(), city.getCity().getName());
holder.put(ObjectEsParameterFactory.GEOLOC_GEO_POINT.getName(), new GeoPoint(loc.getLatitude(), loc.getLongitude()));
}
return holder;
} catch (Throwable e) {
LOG.warn("Can't convert IP to GeoIp", e);
}
return null;
}
use of com.maxmind.geoip2.record.Location in project graylog2-server by Graylog2.
the class MaxmindDataAdapter method doGet.
@Override
protected LookupResult doGet(Object key) {
final InetAddress addr;
if (key instanceof InetAddress) {
addr = (InetAddress) key;
} else {
// try to convert it somehow
try {
addr = InetAddresses.forString(key.toString());
} catch (IllegalArgumentException e) {
LOG.warn("Unable to parse IP address, returning empty result.");
return LookupResult.empty();
}
}
final IPLocationDatabaseAdapter reader = this.databaseAdapter.get();
switch(config.dbType()) {
case MAXMIND_CITY:
try {
final CityResponse city = reader.maxMindCity(addr);
if (city == null) {
LOG.debug("No city data for IP address {}, returning empty result.", addr);
return LookupResult.empty();
}
final Location location = city.getLocation();
final Map<Object, Object> map = new HashMap<>();
map.put("city", city.getCity());
map.put("continent", city.getContinent());
map.put("country", city.getCountry());
map.put("location", location);
map.put("postal", city.getPostal());
map.put("registered_country", city.getRegisteredCountry());
map.put("represented_country", city.getRepresentedCountry());
map.put("subdivisions", city.getSubdivisions());
map.put("traits", city.getTraits());
final String singleValue;
if (location == null || location.getLatitude() == null || location.getLongitude() == null) {
singleValue = null;
} else {
singleValue = location.getLatitude() + "," + location.getLongitude();
map.put("coordinates", singleValue);
}
return LookupResult.multi(singleValue, map);
} catch (AddressNotFoundException nfe) {
LOG.debug("Unable to look up city data for IP address {}, returning empty result.", addr, nfe);
return LookupResult.empty();
} catch (Exception e) {
LOG.warn("Unable to look up city data for IP address {}, returning empty result.", addr, e);
return LookupResult.empty();
}
case MAXMIND_COUNTRY:
try {
final CountryResponse countryResponse = reader.maxMindCountry(addr);
if (countryResponse == null) {
LOG.debug("No country data for IP address {}, returning empty result.", addr);
return LookupResult.empty();
}
final Country country = countryResponse.getCountry();
final Map<Object, Object> map = new HashMap<>();
map.put("continent", countryResponse.getContinent());
map.put("country", country);
map.put("registered_country", countryResponse.getRegisteredCountry());
map.put("represented_country", countryResponse.getRepresentedCountry());
map.put("traits", countryResponse.getTraits());
final String singleValue = country == null ? null : country.getIsoCode();
return LookupResult.multi(singleValue, map);
} catch (AddressNotFoundException nfe) {
LOG.debug("Unable to look up country data for IP address {}, returning empty result.", addr, nfe);
return LookupResult.empty();
} catch (Exception e) {
LOG.warn("Unable to look up country data for IP address {}, returning empty result.", addr, e);
return LookupResult.empty();
}
case MAXMIND_ASN:
try {
final AsnResponse asn = reader.maxMindASN(addr);
if (asn == null) {
LOG.debug("No ASN data for IP address {}, returning empty result.", addr);
return LookupResult.empty();
}
final ImmutableMap<Object, Object> map = ImmutableMap.of("as_number", asn.getAutonomousSystemNumber(), "as_organization", asn.getAutonomousSystemOrganization());
return LookupResult.multi(asn.getAutonomousSystemNumber(), map);
} catch (AddressNotFoundException nfe) {
LOG.debug("Unable to look up ASN data for IP address {}, returning empty result.", addr, nfe);
return LookupResult.empty();
} catch (Exception e) {
LOG.warn("Unable to look up ASN data for IP address {}, returning empty result.", addr, e);
return LookupResult.empty();
}
case IPINFO_ASN:
try {
final IPinfoASN ipInfo = reader.ipInfoASN(addr);
if (ipInfo == null) {
LOG.debug("No IPinfo location data for IP address {}, returning empty result.", addr);
return LookupResult.empty();
}
// Values can be null so we cannot use an ImmutableMap here
final Map<Object, Object> multiValue = new HashMap<>();
multiValue.put("asn", ipInfo.asn());
multiValue.put("asn_numeric", ipInfo.asnNumeric());
multiValue.put("name", ipInfo.name());
multiValue.put("domain", ipInfo.domain());
multiValue.put("type", ipInfo.type());
multiValue.put("route", ipInfo.route());
return LookupResult.multi(ipInfo.asnNumeric(), Collections.unmodifiableMap(multiValue));
} catch (AddressNotFoundException e) {
LOG.debug("Unable to look up IPinfo ASN data for IP address {}, returning empty result.", addr, e);
return LookupResult.empty();
} catch (Exception e) {
LOG.warn("Unable to look up IPinfo ASN data for IP address {}, returning empty result.", addr, e);
return LookupResult.empty();
}
case IPINFO_STANDARD_LOCATION:
try {
final IPinfoStandardLocation ipInfo = reader.ipInfoStandardLocation(addr);
if (ipInfo == null) {
LOG.debug("No IPinfo location data for IP address {}, returning empty result.", addr);
return LookupResult.empty();
}
// Values can be null so we cannot use an ImmutableMap here
final Map<Object, Object> multiValue = new HashMap<>();
multiValue.put("coordinates", ipInfo.coordinates());
multiValue.put("latitude", ipInfo.latitude());
multiValue.put("longitude", ipInfo.longitude());
multiValue.put("city", ipInfo.city());
multiValue.put("country", ipInfo.country());
multiValue.put("region", ipInfo.region());
multiValue.put("timezone", ipInfo.timezone());
multiValue.put("geoname_id", ipInfo.geoNameId());
return LookupResult.multi(ipInfo.coordinates(), Collections.unmodifiableMap(multiValue));
} catch (AddressNotFoundException e) {
LOG.debug("Unable to look up IPinfo location data for IP address {}, returning empty result.", addr, e);
return LookupResult.empty();
} catch (Exception e) {
LOG.warn("Unable to look up IPinfo location data for IP address {}, returning empty result.", addr, e);
return LookupResult.empty();
}
}
return LookupResult.empty();
}
Aggregations