summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authordoufenghu <[email protected]>2022-07-03 16:51:24 +0800
committerdoufenghu <[email protected]>2022-07-03 16:51:24 +0800
commit19072c6f9db2615f0560e485c82025f9b8b60c5e (patch)
treed2b1af776221349fd3fa02c6a7e53ee611ddb24e
parent57ea8f78be2a81c0ad94734479988af7256ea2c7 (diff)
Feature(IpLookup): V1.1.0 新增infoLookupToCSV和infoLookupToJSON,获取IP定位库所有属性信息。v1.1.0
-rw-r--r--pom.xml4
-rw-r--r--src/main/java/com/zdjizhi/domain/LocationResponse.java6
-rw-r--r--src/main/java/com/zdjizhi/domain/LocationResponseV2.java134
-rw-r--r--src/main/java/com/zdjizhi/utils/AbstractIpLookup.java22
-rw-r--r--src/main/java/com/zdjizhi/utils/AsnLookup.java75
-rw-r--r--src/main/java/com/zdjizhi/utils/FormatUtils.java2
-rw-r--r--src/main/java/com/zdjizhi/utils/GalaxyDataBaseReader.java1
-rw-r--r--src/main/java/com/zdjizhi/utils/IpLookup.java56
-rw-r--r--src/main/java/com/zdjizhi/utils/IpLookupV2.java101
-rw-r--r--src/test/java/com/zdjizhi/test/FormatUtilTest.java8
-rw-r--r--src/test/java/com/zdjizhi/test/IPBenchMarkTest.java71
-rw-r--r--src/test/java/com/zdjizhi/test/IpLookupTest.java8
-rw-r--r--src/test/java/com/zdjizhi/test/IpLookupV2Test.java65
13 files changed, 370 insertions, 183 deletions
diff --git a/pom.xml b/pom.xml
index 76af151..9f16711 100644
--- a/pom.xml
+++ b/pom.xml
@@ -7,7 +7,7 @@
<artifactId>galaxy</artifactId>
<packaging>jar</packaging>
<name>galaxy</name>
- <version>1.0.9</version>
+ <version>1.1.0</version>
<description>galaxy tools for common</description>
<url>http://www.zdjizhi.com/galaxy-tool</url>
@@ -218,7 +218,7 @@
<dependency>
<groupId>com.maxmind.db</groupId>
<artifactId>maxmind-db</artifactId>
- <version>1.2.2</version>
+ <version>1.4.0</version>
</dependency>
diff --git a/src/main/java/com/zdjizhi/domain/LocationResponse.java b/src/main/java/com/zdjizhi/domain/LocationResponse.java
index 2df8dc6..db042be 100644
--- a/src/main/java/com/zdjizhi/domain/LocationResponse.java
+++ b/src/main/java/com/zdjizhi/domain/LocationResponse.java
@@ -37,7 +37,7 @@ public class LocationResponse {
private String countryCode;
- private boolean isPrivateIP;
+ private boolean privateIP;
@@ -147,11 +147,11 @@ public class LocationResponse {
}
public boolean isPrivateIP() {
- return isPrivateIP;
+ return privateIP;
}
public void setPrivateIP(boolean privateIP) {
- isPrivateIP = privateIP;
+ this.privateIP = privateIP;
}
}
diff --git a/src/main/java/com/zdjizhi/domain/LocationResponseV2.java b/src/main/java/com/zdjizhi/domain/LocationResponseV2.java
index f0b1c06..cf858ca 100644
--- a/src/main/java/com/zdjizhi/domain/LocationResponseV2.java
+++ b/src/main/java/com/zdjizhi/domain/LocationResponseV2.java
@@ -3,7 +3,7 @@ package com.zdjizhi.domain;/**
*/
import com.fasterxml.jackson.annotation.JsonProperty;
-
+import com.google.common.base.MoreObjects;
/**
* @ClassName CountryResponse
@@ -26,23 +26,23 @@ public class LocationResponseV2 {
private String country;
- private String super_administrative_area;
+ private String superAdministrativeArea;
- private String administrative_area;
+ private String administrativeArea;
- private String sub_administrative_area;
+ private String subAdministrativeArea;
private String locality;
- private String dependent_locality;
+ private String dependentLocality;
- private String double_dependent_locality;
+ private String doubleDependentLocality;
private String organization;
private String countryCode;
- private boolean isPrivateIP;
+ private boolean privateIP;
public LocationResponseV2() {
@@ -53,9 +53,9 @@ public class LocationResponseV2 {
public LocationResponseV2(@JsonProperty("AREA_CODE") String areaCode, @JsonProperty("ASN") String asn,
@JsonProperty("ISP") String isp, @JsonProperty("LATITUDE") String latitude,
@JsonProperty("LONGITUDE") String longitude, @JsonProperty("COUNTRY") String country,
- @JsonProperty("SUPER_ADMINISTRATIVE_AREA") String super_administrative_area, @JsonProperty("ADMINISTRATIVE_AREA") String administrative_area,
- @JsonProperty("SUB_ADMINISTRATIVE_AREA") String sub_administrative_area, @JsonProperty("LOCALITY") String locality,
- @JsonProperty("DEPENDENT_LOCALITY") String dependent_locality, @JsonProperty("DOUBLE_DEPENDENT_LOCALITY") String double_dependent_locality,
+ @JsonProperty("SUPER_ADMINISTRATIVE_AREA") String superAdministrativeArea, @JsonProperty("ADMINISTRATIVE_AREA") String administrativeArea,
+ @JsonProperty("SUB_ADMINISTRATIVE_AREA") String subAdministrativeArea, @JsonProperty("LOCALITY") String locality,
+ @JsonProperty("DEPENDENT_LOCALITY") String dependentLocality, @JsonProperty("DOUBLE_DEPENDENT_LOCALITY") String doubleDependentLocality,
@JsonProperty("ORGANIZATION") String organization, @JsonProperty("COUNTRY_CODE") String countryCode) {
this.areaCode = areaCode;
this.asn = asn;
@@ -63,12 +63,12 @@ public class LocationResponseV2 {
this.latitude = latitude;
this.longitude = longitude;
this.country = country;
- this.super_administrative_area = super_administrative_area;
- this.administrative_area = administrative_area;
- this.sub_administrative_area = sub_administrative_area;
+ this.superAdministrativeArea = superAdministrativeArea;
+ this.administrativeArea = administrativeArea;
+ this.subAdministrativeArea = subAdministrativeArea;
this.locality = locality;
- this.dependent_locality = dependent_locality;
- this.double_dependent_locality = double_dependent_locality;
+ this.dependentLocality = dependentLocality;
+ this.doubleDependentLocality = doubleDependentLocality;
this.organization = organization;
this.countryCode = countryCode;
@@ -90,15 +90,6 @@ public class LocationResponseV2 {
this.asn = asn;
}
- public String getCountry() {
- return country;
- }
-
-
- public void setCountry(String country) {
- this.country = country;
- }
-
public String getIsp() {
return isp;
}
@@ -123,76 +114,99 @@ public class LocationResponseV2 {
this.longitude = longitude;
}
- public String getOrganization() {
- return organization;
+ public String getCountry() {
+ return country;
}
- public void setOrganization(String organization) {
- this.organization = organization;
+ public void setCountry(String country) {
+ this.country = country;
}
- public String getCountryCode() {
- return countryCode;
+ public String getSuperAdministrativeArea() {
+ return superAdministrativeArea;
}
- public void setCountryCode(String countryCode) {
- this.countryCode = countryCode;
+ public void setSuperAdministrativeArea(String superAdministrativeArea) {
+ this.superAdministrativeArea = superAdministrativeArea;
}
- public boolean isPrivateIP() {
- return isPrivateIP;
+ public String getAdministrativeArea() {
+ return administrativeArea;
}
- public void setPrivateIP(boolean privateIP) {
- isPrivateIP = privateIP;
+ public void setAdministrativeArea(String administrativeArea) {
+ this.administrativeArea = administrativeArea;
}
- public String getSuper_administrative_area() {
- return super_administrative_area;
+ public String getSubAdministrativeArea() {
+ return subAdministrativeArea;
}
- public void setSuper_administrative_area(String super_administrative_area) {
- this.super_administrative_area = super_administrative_area;
+ public void setSubAdministrativeArea(String subAdministrativeArea) {
+ this.subAdministrativeArea = subAdministrativeArea;
}
- public String getAdministrative_area() {
- return administrative_area;
+ public String getLocality() {
+ return locality;
}
- public void setAdministrative_area(String administrative_area) {
- this.administrative_area = administrative_area;
+ public void setLocality(String locality) {
+ this.locality = locality;
}
- public String getSub_administrative_area() {
- return sub_administrative_area;
+ public String getDependentLocality() {
+ return dependentLocality;
}
- public void setSub_administrative_area(String sub_administrative_area) {
- this.sub_administrative_area = sub_administrative_area;
+ public void setDependentLocality(String dependentLocality) {
+ this.dependentLocality = dependentLocality;
}
- public String getLocality() {
- return locality;
+ public String getDoubleDependentLocality() {
+ return doubleDependentLocality;
}
- public void setLocality(String locality) {
- this.locality = locality;
+ public void setDoubleDependentLocality(String doubleDependentLocality) {
+ this.doubleDependentLocality = doubleDependentLocality;
}
- public String getDependent_locality() {
- return dependent_locality;
+ public String getOrganization() {
+ return organization;
}
- public void setDependent_locality(String dependent_locality) {
- this.dependent_locality = dependent_locality;
+ public void setOrganization(String organization) {
+ this.organization = organization;
}
- public String getDouble_dependent_locality() {
- return double_dependent_locality;
+ public String getCountryCode() {
+ return countryCode;
}
- public void setDouble_dependent_locality(String double_dependent_locality) {
- this.double_dependent_locality = double_dependent_locality;
+ public void setCountryCode(String countryCode) {
+ this.countryCode = countryCode;
+ }
+
+ public boolean isPrivateIP() {
+ return privateIP;
+ }
+
+ public void setPrivateIP(boolean privateIP) {
+ this.privateIP = privateIP;
+ }
+
+ @Override
+ public String toString() {
+ return MoreObjects.toStringHelper(this)
+ .add("country", getCountry())
+ .add("superAdministrativeArea", getSuperAdministrativeArea())
+ .add("administrativeArea", getAdministrativeArea())
+ .add("subAdministrativeArea", getSubAdministrativeArea())
+ .add("organization", getOrganization())
+ .add("isp", getIsp())
+ .add("asn", getAsn())
+ .add("latitude", getLatitude())
+ .add("longitude", getLongitude())
+ .toString();
}
}
diff --git a/src/main/java/com/zdjizhi/utils/AbstractIpLookup.java b/src/main/java/com/zdjizhi/utils/AbstractIpLookup.java
index 6138713..edd055b 100644
--- a/src/main/java/com/zdjizhi/utils/AbstractIpLookup.java
+++ b/src/main/java/com/zdjizhi/utils/AbstractIpLookup.java
@@ -136,14 +136,32 @@ public abstract class AbstractIpLookup {
* @param ip ip地址
* @return country code
*/
- public abstract String getCountryCode(String ip);
+ public abstract String countryCodeLookup(String ip);
/**
* A string of up to three characters containing the region-portion of the ISO 3166-2 code for the first level region associated with the IP address.
* @param ip ip地址
* @return First Level Region Code
*/
- public abstract String getRegionCode(String ip);
+ public abstract String regionCodeLookup(String ip);
+
+ /**
+ * This method to return all fields for CSV.
+ * [Location]\t[ISP]\t[Organization]\t[ASN]\t[Latitude,Longitude]
+ * -[Location]:Country.SuperAdministrativeArea[Province].AdministrativeArea[City][.SubAdministrativeArea][.Locality][.DependentLocality][.DoubleDependentLocality]
+ * -[Latitude,Longitude] : Latitude,Longitude
+ * @param ip
+ * @return
+ */
+ public abstract String infoLookupToCSV(String ip);
+
+ /**
+ * This method to return all fields for JSON.
+ * @param ip
+ * @return
+ */
+ public abstract String infoLookupToJson(String ip);
+
diff --git a/src/main/java/com/zdjizhi/utils/AsnLookup.java b/src/main/java/com/zdjizhi/utils/AsnLookup.java
index daf810d..8207c35 100644
--- a/src/main/java/com/zdjizhi/utils/AsnLookup.java
+++ b/src/main/java/com/zdjizhi/utils/AsnLookup.java
@@ -3,7 +3,7 @@ package com.zdjizhi.utils;
import com.google.common.base.Joiner;
import com.maxmind.db.CHMCache;
import com.maxmind.geoip2.exception.AddressNotFoundException;
-import com.zdjizhi.domain.LocationResponse;
+import com.zdjizhi.domain.LocationResponseV2;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -134,32 +134,26 @@ public class AsnLookup {
if (StringUtil.isNotBlank(builder.asnDatabasePublicFile)) {
- asnLocationPublicReader = new GalaxyDataBaseReader.Builder(new File(builder.asnDatabasePublicFile))
- .withCache(new CHMCache()).build();
+ asnLocationPublicReader = new GalaxyDataBaseReader.Builder(new File(builder.asnDatabasePublicFile)).withCache(new CHMCache()).build();
}
if (StringUtil.isNotBlank(builder.asnDatabasePublicFileV4)) {
- asnLocationPublicReaderV4 = new GalaxyDataBaseReader.Builder(new File(builder.asnDatabasePublicFileV4))
- .withCache(new CHMCache()).build();
+ asnLocationPublicReaderV4 = new GalaxyDataBaseReader.Builder(new File(builder.asnDatabasePublicFileV4)).withCache(new CHMCache()).build();
}
if (StringUtil.isNotBlank(builder.asnDatabasePublicFileV6)) {
- asnLocationPublicReaderV6 = new GalaxyDataBaseReader.Builder(new File(builder.asnDatabasePublicFileV6))
- .withCache(new CHMCache()).build();
+ asnLocationPublicReaderV6 = new GalaxyDataBaseReader.Builder(new File(builder.asnDatabasePublicFileV6)).withCache(new CHMCache()).build();
}
if (StringUtil.isNotBlank(builder.asnDatabasePrivateFile)) {
- asnLocationPrivateReader = new GalaxyDataBaseReader.Builder(new File(builder.asnDatabasePrivateFile))
- .withCache(new CHMCache()).build();
+ asnLocationPrivateReader = new GalaxyDataBaseReader.Builder(new File(builder.asnDatabasePrivateFile)).withCache(new CHMCache()).build();
}
if (StringUtil.isNotBlank(builder.asnDatabasePrivateFileV4)) {
- asnLocationPrivateReaderV4 = new GalaxyDataBaseReader.Builder(new File(builder.asnDatabasePrivateFileV4))
- .withCache(new CHMCache()).build();
+ asnLocationPrivateReaderV4 = new GalaxyDataBaseReader.Builder(new File(builder.asnDatabasePrivateFileV4)).withCache(new CHMCache()).build();
}
if (StringUtil.isNotBlank(builder.asnDatabasePrivateFileV6)) {
- asnLocationPrivateReaderV6 = new GalaxyDataBaseReader.Builder(new File(builder.asnDatabasePrivateFileV6))
- .withCache(new CHMCache()).build();
+ asnLocationPrivateReaderV6 = new GalaxyDataBaseReader.Builder(new File(builder.asnDatabasePrivateFileV6)).withCache(new CHMCache()).build();
}
}
@@ -290,7 +284,7 @@ public class AsnLookup {
public String asnLookup(String ip) {
- LocationResponse response = getResponse(ip);
+ LocationResponseV2 response = getResponse(ip);
if (StringUtil.isEmpty(response) || response.isPrivateIP()) {
return UNKNOWN;
@@ -302,7 +296,7 @@ public class AsnLookup {
}
public String asnLookupInfo(String ip) {
- LocationResponse response = getResponse(ip);
+ LocationResponseV2 response = getResponse(ip);
if (StringUtil.isEmpty(response) || response.isPrivateIP()) {
return UNKNOWN;
}
@@ -313,7 +307,7 @@ public class AsnLookup {
public String asnLookupDetail(String ip) {
- LocationResponse response = getResponse(ip);
+ LocationResponseV2 response = getResponse(ip);
if (StringUtil.isEmpty(response) || response.isPrivateIP()) {
return UNKNOWN;
@@ -324,19 +318,16 @@ public class AsnLookup {
- private LocationResponse getResponse(String ip) {
- LocationResponse response = null;
- if (!IPUtil.isIP(ip) && !IPUtil.isIPv6Address(ip)) {
- throw new IllegalArgumentException("unknown ip format :" + ip );
- }
-
- response = new Context(new PrivateReader()).executeStragey(ip);
-
- if (StringUtil.isEmpty(response)) {
- response = new Context(new PublicReader()).executeStragey(ip);
+ private LocationResponseV2 getResponse(String ip) {
+ LocationResponseV2 response = null;
+ if (IPUtil.isIPv4Address(ip) || IPUtil.isIPv6Address(ip)) {
+ response = new Context(new PrivateReader()).executeStragey(ip);
+ if (StringUtil.isEmpty(response)) {
+ response = new Context(new PublicReader()).executeStragey(ip);
+ }
+ } else {
+ throw new IllegalArgumentException("Unknown IP format :" + ip );
}
-
-
return response;
}
@@ -380,7 +371,7 @@ public class AsnLookup {
interface Strategy {
- LocationResponse getResponse(String ip);
+ LocationResponseV2 getResponse(String ip);
}
/**
@@ -388,27 +379,28 @@ public class AsnLookup {
*/
class PrivateReader implements Strategy {
@Override
- public LocationResponse getResponse(String ip) {
+ public LocationResponseV2 getResponse(String ip) {
GalaxyDataBaseReader dataBaseReader = null;
+ LocationResponseV2 response = null;
try {
InetAddress ipAddress = InetAddress.getByName(ip);
- if (IPUtil.isIP(ip)) {
+ if (IPUtil.isIPv4Address(ip)) {
dataBaseReader = getAsnDataBaseReaderV4(ServiceEnum.PRIVATE.name());
} else if (IPUtil.isIPv6Address(ip)) {
dataBaseReader = getAsnDataBaseReaderV6(ServiceEnum.PRIVATE.name());
}
if (StringUtil.isNotEmpty(dataBaseReader)) {
- return dataBaseReader.location(ipAddress);
+ response = dataBaseReader.locationV2(ipAddress);
}
} catch(AddressNotFoundException addressNotFoundException) {
- logger.warn("Address not found ,ip is :" + ip);
+ logger.debug("Address not found ,ip is :" + ip);
} catch (Exception e) {
throw new IllegalArgumentException("ip address :" + ip +", parser error " + e);
}
- return null;
+ return response;
}
}
/**
@@ -416,12 +408,14 @@ public class AsnLookup {
*/
class PublicReader implements Strategy {
@Override
- public LocationResponse getResponse(String ip) {
+ public LocationResponseV2 getResponse(String ip) {
GalaxyDataBaseReader dataBaseReader = null;
+ LocationResponseV2 response = null;
+
try {
InetAddress ipAddress = InetAddress.getByName(ip);
- if (IPUtil.isIP(ip)) {
+ if (IPUtil.isIPv4Address(ip)) {
dataBaseReader = getAsnDataBaseReaderV4(ServiceEnum.PUBLIC.name());
} else if (IPUtil.isIPv6Address(ip)) {
@@ -430,15 +424,15 @@ public class AsnLookup {
}
if (StringUtil.isNotEmpty(dataBaseReader)) {
- return dataBaseReader.location(ipAddress);
+ response = dataBaseReader.locationV2(ipAddress);
}
} catch(AddressNotFoundException addressNotFoundException) {
- logger.warn("Address not found ,ip is :" + ip);
+ logger.debug("Address not found ,ip is :" + ip);
} catch (Exception e) {
throw new IllegalArgumentException("ip address :" + ip +", parser error " + e);
}
- return null;
+ return response;
}
@@ -453,7 +447,8 @@ public class AsnLookup {
this.strategy = strategy;
}
- public LocationResponse executeStragey(String ip) {
+ public LocationResponseV2 executeStragey(String ip) {
+
return strategy.getResponse(ip);
}
diff --git a/src/main/java/com/zdjizhi/utils/FormatUtils.java b/src/main/java/com/zdjizhi/utils/FormatUtils.java
index 03a3d4d..1f55840 100644
--- a/src/main/java/com/zdjizhi/utils/FormatUtils.java
+++ b/src/main/java/com/zdjizhi/utils/FormatUtils.java
@@ -121,6 +121,7 @@ public class FormatUtils {
/**
* 获取域名的顶级私有域名
* 例如:getTopPrivateDomain('www.google.com.hk') ,返回 google.com.hk
+ * 公共后缀字典:https://publicsuffix.org/list/public_suffix_list.dat
* @param domain 网站域名
* @return 顶级私有域名
*/
@@ -133,7 +134,6 @@ public class FormatUtils {
}
InternetDomainName internetDomainName = InternetDomainName.from(domain);
-
if (internetDomainName.isUnderPublicSuffix()) {
return internetDomainName.topPrivateDomain().toString();
} else {
diff --git a/src/main/java/com/zdjizhi/utils/GalaxyDataBaseReader.java b/src/main/java/com/zdjizhi/utils/GalaxyDataBaseReader.java
index 85c14b9..e9b5f1d 100644
--- a/src/main/java/com/zdjizhi/utils/GalaxyDataBaseReader.java
+++ b/src/main/java/com/zdjizhi/utils/GalaxyDataBaseReader.java
@@ -7,7 +7,6 @@ import com.fasterxml.jackson.databind.node.ObjectNode;
import com.maxmind.db.*;
import com.maxmind.geoip2.exception.AddressNotFoundException;
import com.maxmind.geoip2.exception.GeoIp2Exception;
-import com.maxmind.geoip2.model.*;
import com.zdjizhi.domain.LocationResponse;
import com.zdjizhi.domain.JsonInjector;
import com.zdjizhi.domain.LocationResponseV2;
diff --git a/src/main/java/com/zdjizhi/utils/IpLookup.java b/src/main/java/com/zdjizhi/utils/IpLookup.java
index 2e40207..80af908 100644
--- a/src/main/java/com/zdjizhi/utils/IpLookup.java
+++ b/src/main/java/com/zdjizhi/utils/IpLookup.java
@@ -4,6 +4,7 @@ import com.google.common.base.Joiner;
import com.maxmind.db.CHMCache;
import com.maxmind.geoip2.exception.AddressNotFoundException;
import com.zdjizhi.domain.LocationResponse;
+import com.zdjizhi.domain.LocationResponseV2;
import java.io.File;
import java.io.IOException;
@@ -140,36 +141,29 @@ public final class IpLookup extends AbstractIpLookup{
if (StringUtil.isNotBlank(builder.ipDatabasePublicFile)) {
- ipLocationPublicReader = new GalaxyDataBaseReader.Builder(new File(builder.ipDatabasePublicFile))
- .withCache(new CHMCache()).build();
+ ipLocationPublicReader = new GalaxyDataBaseReader.Builder(new File(builder.ipDatabasePublicFile)).withCache(new CHMCache()).build();
}
if (StringUtil.isNotBlank(builder.ipDatabasePublicFileV4)) {
- ipLocationPublicReaderV4 = new GalaxyDataBaseReader.Builder(new File(builder.ipDatabasePublicFileV4))
- .withCache(new CHMCache()).build();
+ ipLocationPublicReaderV4 = new GalaxyDataBaseReader.Builder(new File(builder.ipDatabasePublicFileV4)).withCache(new CHMCache()).build();
}
if (StringUtil.isNotBlank(builder.ipDatabasePublicFileV6)) {
- ipLocationPublicReaderV6 = new GalaxyDataBaseReader.Builder(new File(builder.ipDatabasePublicFileV6))
- .withCache(new CHMCache()).build();
+ ipLocationPublicReaderV6 = new GalaxyDataBaseReader.Builder(new File(builder.ipDatabasePublicFileV6)).withCache(new CHMCache()).build();
}
if (StringUtil.isNotBlank(builder.ipDatabasePrivateFile)) {
- ipLocationPrivateReader = new GalaxyDataBaseReader.Builder(new File(builder.ipDatabasePrivateFile))
- .withCache(new CHMCache()).build();
+ ipLocationPrivateReader = new GalaxyDataBaseReader.Builder(new File(builder.ipDatabasePrivateFile)).withCache(new CHMCache()).build();
}
if (StringUtil.isNotBlank(builder.ipDatabasePrivateFileV4)) {
- ipLocationPrivateReaderV4 = new GalaxyDataBaseReader.Builder(new File(builder.ipDatabasePrivateFileV4))
- .withCache(new CHMCache()).build();
+ ipLocationPrivateReaderV4 = new GalaxyDataBaseReader.Builder(new File(builder.ipDatabasePrivateFileV4)).withCache(new CHMCache()).build();
}
if (StringUtil.isNotBlank(builder.ipDatabasePrivateFileV6)) {
- ipLocationPrivateReaderV6 = new GalaxyDataBaseReader.Builder(new File(builder.ipDatabasePrivateFileV6))
- .withCache(new CHMCache()).build();
+ ipLocationPrivateReaderV6 = new GalaxyDataBaseReader.Builder(new File(builder.ipDatabasePrivateFileV6)).withCache(new CHMCache()).build();
}
-
asnLookup = new AsnLookup.Builder(false)
.loadDataFile(builder.asnDatabasePublicFile)
.loadDataFileV4(builder.asnDatabasePublicFileV4)
@@ -433,7 +427,7 @@ public final class IpLookup extends AbstractIpLookup{
}
@Override
- public String getCountryCode(String ip) {
+ public String countryCodeLookup(String ip) {
LocationResponse response = getResponse(ip);
if (StringUtil.isEmpty(response)) {
return UNKNOWN;
@@ -442,7 +436,7 @@ public final class IpLookup extends AbstractIpLookup{
}
@Override
- public String getRegionCode(String ip) {
+ public String regionCodeLookup(String ip) {
LocationResponse response = getResponse(ip);
if (StringUtil.isEmpty(response)) {
return UNKNOWN;
@@ -451,6 +445,38 @@ public final class IpLookup extends AbstractIpLookup{
}
@Override
+ public String infoLookupToCSV(String ip) {
+ LocationResponse response = getResponse(ip);
+ if (StringUtil.isEmpty(response)) {
+ return UNKNOWN;
+ }
+ StringBuilder ipInfo = new StringBuilder();
+ ipInfo.append(
+ Joiner.on(LOCATION_SEPARATOR).useForNull("").join(response.getCountry(), response.getProvince(), response.getCity())
+ ).append(OBJECT_SEPARATOR).append(
+ StringUtil.setDefaultIfEmpty(response.getIsp(), UNKNOWN).toString()
+ ).append(OBJECT_SEPARATOR).append(
+ StringUtil.setDefaultIfEmpty(response.getOrganization(), UNKNOWN).toString()
+ ).append(OBJECT_SEPARATOR).append(
+ asnLookup.asnLookup(ip)
+ ).append(OBJECT_SEPARATOR).append(
+ Joiner.on(LATLNG_SEPARATOR).skipNulls().join(response.getLatitude(), response.getLongitude())
+ );
+
+ return ipInfo.toString();
+ }
+
+ @Override
+ public String infoLookupToJson(String ip) {
+ LocationResponse response = getResponse(ip);
+ if (StringUtil.isEmpty(response)) {
+ response = new LocationResponse();
+ }
+ response.setAsn(asnLookup(ip));
+ return JsonMapper.toJsonString(response);
+ }
+
+ @Override
public String provinceLookup(String ip) {
LocationResponse response = getResponse(ip);
if (StringUtil.isEmpty(response)) {
diff --git a/src/main/java/com/zdjizhi/utils/IpLookupV2.java b/src/main/java/com/zdjizhi/utils/IpLookupV2.java
index a16c1f6..8302e64 100644
--- a/src/main/java/com/zdjizhi/utils/IpLookupV2.java
+++ b/src/main/java/com/zdjizhi/utils/IpLookupV2.java
@@ -3,14 +3,12 @@ package com.zdjizhi.utils;
import com.google.common.base.Joiner;
import com.maxmind.db.CHMCache;
import com.maxmind.geoip2.exception.AddressNotFoundException;
-import com.zdjizhi.domain.LocationResponse;
import com.zdjizhi.domain.LocationResponseV2;
import java.io.File;
import java.io.IOException;
import java.net.InetAddress;
import java.net.URL;
-import java.util.Objects;
import java.util.Optional;
/**
@@ -137,36 +135,30 @@ public final class IpLookupV2 extends AbstractIpLookup{
if (StringUtil.isNotBlank(builder.ipDatabasePublicFile)) {
- ipLocationPublicReader = new GalaxyDataBaseReader.Builder(new File(builder.ipDatabasePublicFile))
- .withCache(new CHMCache()).build();
+ ipLocationPublicReader = new GalaxyDataBaseReader.Builder(new File(builder.ipDatabasePublicFile)).withCache(new CHMCache()).build();
+
}
if (StringUtil.isNotBlank(builder.ipDatabasePublicFileV4)) {
- ipLocationPublicReaderV4 = new GalaxyDataBaseReader.Builder(new File(builder.ipDatabasePublicFileV4))
- .withCache(new CHMCache()).build();
+ ipLocationPublicReaderV4 = new GalaxyDataBaseReader.Builder(new File(builder.ipDatabasePublicFileV4)).withCache(new CHMCache()).build();
}
if (StringUtil.isNotBlank(builder.ipDatabasePublicFileV6)) {
- ipLocationPublicReaderV6 = new GalaxyDataBaseReader.Builder(new File(builder.ipDatabasePublicFileV6))
- .withCache(new CHMCache()).build();
+ ipLocationPublicReaderV6 = new GalaxyDataBaseReader.Builder(new File(builder.ipDatabasePublicFileV6)).withCache(new CHMCache()).build();
}
if (StringUtil.isNotBlank(builder.ipDatabasePrivateFile)) {
- ipLocationPrivateReader = new GalaxyDataBaseReader.Builder(new File(builder.ipDatabasePrivateFile))
- .withCache(new CHMCache()).build();
+ ipLocationPrivateReader = new GalaxyDataBaseReader.Builder(new File(builder.ipDatabasePrivateFile)).withCache(new CHMCache()).build();
}
if (StringUtil.isNotBlank(builder.ipDatabasePrivateFileV4)) {
- ipLocationPrivateReaderV4 = new GalaxyDataBaseReader.Builder(new File(builder.ipDatabasePrivateFileV4))
- .withCache(new CHMCache()).build();
+ ipLocationPrivateReaderV4 = new GalaxyDataBaseReader.Builder(new File(builder.ipDatabasePrivateFileV4)).withCache(new CHMCache()).build();
}
if (StringUtil.isNotBlank(builder.ipDatabasePrivateFileV6)) {
- ipLocationPrivateReaderV6 = new GalaxyDataBaseReader.Builder(new File(builder.ipDatabasePrivateFileV6))
- .withCache(new CHMCache()).build();
+ ipLocationPrivateReaderV6 = new GalaxyDataBaseReader.Builder(new File(builder.ipDatabasePrivateFileV6)).withCache(new CHMCache()).build();
}
-
asnLookup = new AsnLookup.Builder(false)
.loadDataFile(builder.asnDatabasePublicFile)
.loadDataFileV4(builder.asnDatabasePublicFileV4)
@@ -401,7 +393,7 @@ public final class IpLookupV2 extends AbstractIpLookup{
return
Joiner.on(LOCATION_SEPARATOR).useForNull("").join(response.getCountry(),
- response.getSuper_administrative_area(), response.getAdministrative_area());
+ response.getSuperAdministrativeArea(), response.getAdministrativeArea());
}
@Override
@@ -415,9 +407,9 @@ public final class IpLookupV2 extends AbstractIpLookup{
return PRIVATE_IP;
}
- return Joiner.on(LOCATION_SEPARATOR).useForNull("").join(response.getCountry(),
- response.getSuper_administrative_area(), response.getAdministrative_area(),
- response.getSub_administrative_area());
+ return Joiner.on(LOCATION_SEPARATOR).useForNull("").join(response.getCountry(),
+ response.getSuperAdministrativeArea(), response.getAdministrativeArea(),
+ response.getSubAdministrativeArea());
}
@@ -433,9 +425,9 @@ public final class IpLookupV2 extends AbstractIpLookup{
}
return Joiner.on(LOCATION_SEPARATOR).useForNull("").join(response.getCountry(),
- response.getSuper_administrative_area(), response.getAdministrative_area(),
- response.getSub_administrative_area(), response.getLocality(),
- response.getDependent_locality(), response.getDouble_dependent_locality());
+ response.getSuperAdministrativeArea(), response.getAdministrativeArea(),
+ response.getSubAdministrativeArea(), response.getLocality(),
+ response.getDependentLocality(), response.getDoubleDependentLocality());
}
@Override
@@ -449,12 +441,12 @@ public final class IpLookupV2 extends AbstractIpLookup{
return PRIVATE_IP;
}
- return StringUtil.setDefaultIfEmpty(response.getAdministrative_area(), UNKNOWN).toString() ;
+ return StringUtil.setDefaultIfEmpty(response.getAdministrativeArea(), UNKNOWN).toString() ;
}
@Override
- public String getCountryCode(String ip) {
+ public String countryCodeLookup(String ip) {
LocationResponseV2 response = getResponse(ip);
if (StringUtil.isEmpty(response)) {
return UNKNOWN;
@@ -463,7 +455,7 @@ public final class IpLookupV2 extends AbstractIpLookup{
}
@Override
- public String getRegionCode(String ip) {
+ public String regionCodeLookup(String ip) {
LocationResponseV2 response = getResponse(ip);
if (StringUtil.isEmpty(response)) {
return UNKNOWN;
@@ -472,6 +464,43 @@ public final class IpLookupV2 extends AbstractIpLookup{
}
@Override
+ public String infoLookupToCSV(String ip) {
+ LocationResponseV2 response = getResponse(ip);
+ if (StringUtil.isEmpty(response)) {
+ return UNKNOWN;
+ }
+ StringBuilder ipInfo = new StringBuilder();
+ ipInfo.append(
+ Joiner.on(LOCATION_SEPARATOR).useForNull("").join(response.getCountry(),
+ response.getSuperAdministrativeArea(), response.getAdministrativeArea(),
+ response.getSubAdministrativeArea(), response.getLocality(),
+ response.getDependentLocality(), response.getDoubleDependentLocality()))
+ .append(OBJECT_SEPARATOR).append(
+ StringUtil.setDefaultIfEmpty(response.getIsp(), UNKNOWN).toString()
+ ).append(OBJECT_SEPARATOR).append(
+ StringUtil.setDefaultIfEmpty(response.getOrganization(), UNKNOWN).toString()
+ ).append(OBJECT_SEPARATOR).append(
+ asnLookup.asnLookup(ip)
+ ).append(OBJECT_SEPARATOR).append(
+ Joiner.on(LATLNG_SEPARATOR).skipNulls().join(response.getLatitude(), response.getLongitude())
+ );
+
+ return ipInfo.toString();
+ }
+
+
+ @Override
+ public String infoLookupToJson(String ip) {
+ LocationResponseV2 response = getResponse(ip);
+ if (StringUtil.isEmpty(response)) {
+ response = new LocationResponseV2();
+ }
+ response.setAsn(asnLookup(ip));
+ return JsonMapper.toJsonString(response);
+ }
+
+
+ @Override
public String provinceLookup(String ip) {
LocationResponseV2 response = getResponse(ip);
if (StringUtil.isEmpty(response)) {
@@ -480,7 +509,7 @@ public final class IpLookupV2 extends AbstractIpLookup{
if (response.isPrivateIP()) {
return PRIVATE_IP;
}
- return StringUtil.setDefaultIfEmpty(response.getSuper_administrative_area(), UNKNOWN).toString() ;
+ return StringUtil.setDefaultIfEmpty(response.getSuperAdministrativeArea(), UNKNOWN).toString() ;
}
@Override
@@ -508,6 +537,8 @@ public final class IpLookupV2 extends AbstractIpLookup{
}
+
+
@Override
public String latLngLookup(String ip) {
LocationResponseV2 response = getResponse(ip);
@@ -545,7 +576,7 @@ public final class IpLookupV2 extends AbstractIpLookup{
ip = Optional.ofNullable(ip).orElse("").trim();
if (!IPUtil.isIPAddress(ip)) {
- throw new IllegalArgumentException("unknown ip format :" + ip );
+ throw new IllegalArgumentException("Unknown IP format :" + ip );
}
LocationResponseV2 response = new Context(new PrivateReader()).executeStrategy(ip);
@@ -604,9 +635,9 @@ public final class IpLookupV2 extends AbstractIpLookup{
}
/**
- * 用户自定义IP库的执行策略
+ * 用户自定义库的执行策略
*/
- class PrivateReader implements Strategy {
+ class PrivateReader implements Strategy {
@Override
public LocationResponseV2 getResponse(String ip) {
GalaxyDataBaseReader dataBaseReader = null;
@@ -614,7 +645,7 @@ public final class IpLookupV2 extends AbstractIpLookup{
try {
InetAddress ipAddress = InetAddress.getByName(ip);
- if (IPUtil.isIP(ip)) {
+ if (IPUtil.isIPv4Address(ip)) {
dataBaseReader = getIpDataBaseReaderV4(ServiceEnum.PRIVATE.name());
} else if (IPUtil.isIPv6Address(ip)) {
dataBaseReader = getIpDataBaseReaderV6(ServiceEnum.PRIVATE.name());
@@ -627,15 +658,15 @@ public final class IpLookupV2 extends AbstractIpLookup{
} catch(AddressNotFoundException addressNotFoundException) {
logger.debug("Address not found ,ip is :" + ip);
} catch (Exception e) {
- throw new IllegalArgumentException("ip address :" + ip +", parser error " + e);
+ throw new IllegalArgumentException("IP address :" + ip +", parser error " + e);
}
return response;
}
}
/**
- * 第三方服务库的执行策略,例如maxmind、IPDAT
+ * 公共库(系统内置)库执行策略
*/
- class PublicReader implements Strategy {
+ class PublicReader implements Strategy {
@Override
public LocationResponseV2 getResponse(String ip) {
GalaxyDataBaseReader dataBaseReader = null;
@@ -643,7 +674,7 @@ public final class IpLookupV2 extends AbstractIpLookup{
try {
InetAddress ipAddress = InetAddress.getByName(ip);
- if (IPUtil.isIP(ip)) {
+ if (IPUtil.isIPv4Address(ip)) {
dataBaseReader = getIpDataBaseReaderV4(ServiceEnum.PUBLIC.name());
} else if (IPUtil.isIPv6Address(ip)) {
@@ -673,7 +704,7 @@ public final class IpLookupV2 extends AbstractIpLookup{
@Override
public LocationResponseV2 getResponse(String ip) {
LocationResponseV2 response = null;
- if(IPUtil.isIP(ip) && IPUtil.internalIp(ip)) {
+ if(IPUtil.isIPv4Address(ip) && IPUtil.internalIp(ip)) {
response = new LocationResponseV2();
response.setPrivateIP(true);
}
diff --git a/src/test/java/com/zdjizhi/test/FormatUtilTest.java b/src/test/java/com/zdjizhi/test/FormatUtilTest.java
index 0fa1d33..6b822de 100644
--- a/src/test/java/com/zdjizhi/test/FormatUtilTest.java
+++ b/src/test/java/com/zdjizhi/test/FormatUtilTest.java
@@ -22,19 +22,19 @@ public class FormatUtilTest {
@Test
public void testGetTopDomain() {
Assert.assertEquals(FormatUtils.getTopPrivateDomain("https://pan.baidu.com/s/1wejv5ZceAL0NQGExvPQm-Q#list/path=%2F&parentPath=%2Fsharelink3477893581-1028235543414583"), "baidu.com");
-
Assert.assertEquals(FormatUtils.getTopPrivateDomain("www.baidu.com"), "baidu.com");
Assert.assertEquals(FormatUtils.getTopPrivateDomain("www.baidu.com.cn"), "baidu.com.cn");
Assert.assertEquals(FormatUtils.getTopPrivateDomain("www.baidu.cc"), "baidu.cc");
Assert.assertEquals(FormatUtils.getTopPrivateDomain("baidu.com.hk"), "baidu.com.hk");
Assert.assertEquals(FormatUtils.getTopPrivateDomain("baidu.com.hk:80/abc.html"), "baidu.com.hk");
-
-
Assert.assertEquals(FormatUtils.getTopPrivateDomain("&&&&Dddddsdd"), "");
Assert.assertEquals(FormatUtils.getTopPrivateDomain("com.cn"), "");
+ Assert.assertNotEquals(FormatUtils.getTopPrivateDomain("playetoms-pa.googleapis.com"), "googleapis.com");
Assert.assertNotEquals(FormatUtils.getTopPrivateDomain("com.io"), "com.io");
- }
+
+
+ }
diff --git a/src/test/java/com/zdjizhi/test/IPBenchMarkTest.java b/src/test/java/com/zdjizhi/test/IPBenchMarkTest.java
new file mode 100644
index 0000000..67ff5e2
--- /dev/null
+++ b/src/test/java/com/zdjizhi/test/IPBenchMarkTest.java
@@ -0,0 +1,71 @@
+package com.zdjizhi.test;
+
+import com.zdjizhi.utils.AsnLookup;
+import com.zdjizhi.utils.IpLookup;
+import com.zdjizhi.utils.IpLookupV2;
+import org.apache.log4j.Logger;
+
+import java.io.IOException;
+import java.net.InetAddress;
+import java.util.Random;
+
+public class IPBenchMarkTest {
+ private final static Logger logger = Logger.getLogger(IpLookupTest.class);
+ private final static boolean TRACE = false;
+
+ private final static int COUNT = 1000000;
+
+ private final static int SEED = 5;
+
+
+ private static IpLookupV2 ipLookupV2 = new IpLookupV2.Builder(false)
+ .loadDataFileV4("dat/ip_v4_built_in.mmdb")
+ .loadDataFilePrivateV6("dat/ip_v4_user_defined.mmdb")
+ .loadDataFileV6("dat/ip_v6_built_in.mmdb")
+ .loadDataFilePrivateV6("dat/ip_v6_user_defined.mmdb")
+ .loadAsnDataFile("dat/asn_v4.mmdb")
+ .loadAsnDataFileV6("dat/asn_v6.mmdb")
+ .build();
+
+ private static IpLookup ipLookup = new IpLookup.Builder(false)
+ .loadDataFileV4("dat/ip_v4_built_in.mmdb")
+ .loadDataFilePrivateV6("dat/ip_v4_user_defined.mmdb")
+ .loadDataFileV6("dat/ip_v6_built_in.mmdb")
+ .loadDataFilePrivateV6("dat/ip_v6_user_defined.mmdb")
+ .loadAsnDataFile("dat/asn_v4.mmdb")
+ .loadAsnDataFileV6("dat/asn_v6.mmdb")
+ .build();
+
+ private static AsnLookup asnLookup = new AsnLookup.Builder(false)
+ .loadDataFileV4("dat/asn_v4.mmdb")
+ .loadDataFileV6("dat/asn_v6.mmdb")
+ .build();
+
+ public static void main(String[] args) throws IOException{
+ for(int i=0; i< SEED; i++) {
+ benchMark(COUNT, i);
+ }
+ }
+
+ private static void benchMark(int count, int seed) throws IOException {
+ Random random = new Random(seed);
+ long startTime = System.nanoTime();
+ byte[] address = new byte[4];
+ for (int i = 0; i < count; i++) {
+ random.nextBytes(address);
+ InetAddress ip = InetAddress.getByAddress(address);
+ String ipInfo = ipLookupV2.infoLookupToJson(ip.getHostAddress());
+ if (TRACE) {
+ if (i % 50000 == 0) {
+ logger.info(i + " " + ip);
+ logger.info(ipInfo);
+ }
+ }
+ }
+ long endTime = System.nanoTime();
+ long duration = endTime - startTime;
+ long qps = count * 1000000000L / duration;
+ logger.info("Requests per second: " + qps);
+ }
+
+}
diff --git a/src/test/java/com/zdjizhi/test/IpLookupTest.java b/src/test/java/com/zdjizhi/test/IpLookupTest.java
index 1ed08b5..e6861c7 100644
--- a/src/test/java/com/zdjizhi/test/IpLookupTest.java
+++ b/src/test/java/com/zdjizhi/test/IpLookupTest.java
@@ -43,6 +43,10 @@ public class IpLookupTest {
logger.info(ipLookup.organizationLookup("123.139.226.221"));
logger.info(ipLookup.ispLookup("116.178.179.36"));
logger.info(ipLookup.organizationLookup("116.178.179.36"));
+ logger.info(ipLookup.infoLookupToCSV("116.178.179.36"));
+ logger.info(ipLookup.infoLookupToJson("116.178.179.36"));
+
+
}
@@ -61,8 +65,8 @@ public class IpLookupTest {
logger.info(ipLookup.cityLookup("120.221.155.123"));
logger.info(ipLookup.countryLookup("120.221.155.223"));
logger.info(ipLookup.countryLookup("120.221.155.223"));
- logger.info(ipLookup.getCountryCode("120.221.155.223"));
- logger.info(ipLookup.getRegionCode("120.221.155.223"));
+ logger.info(ipLookup.countryCodeLookup("120.221.155.223"));
+ logger.info(ipLookup.regionCodeLookup("120.221.155.223"));
diff --git a/src/test/java/com/zdjizhi/test/IpLookupV2Test.java b/src/test/java/com/zdjizhi/test/IpLookupV2Test.java
index 4748c43..b07ea04 100644
--- a/src/test/java/com/zdjizhi/test/IpLookupV2Test.java
+++ b/src/test/java/com/zdjizhi/test/IpLookupV2Test.java
@@ -2,29 +2,46 @@ package com.zdjizhi.test;
import com.zdjizhi.utils.IpLookupV2;
import org.apache.log4j.Logger;
+import org.junit.Assert;
+import org.junit.Rule;
import org.junit.Test;
+import org.junit.rules.ExpectedException;
public class IpLookupV2Test {
Logger logger = Logger.getLogger(IpLookupV2Test.class);
+ @Rule
+ public ExpectedException expectedEx = ExpectedException.none();
+
+ IpLookupV2 ipLookup = new IpLookupV2.Builder(false)
+ .loadDataFileV4("dat/ip_v4_built_in.mmdb")
+ .loadDataFilePrivateV6("dat/ip_v4_user_defined.mmdb")
+ .loadDataFileV6("dat/ip_v6_built_in.mmdb")
+ .loadDataFilePrivateV6("dat/ip_v6_user_defined.mmdb")
+ .loadAsnDataFile("dat/asn_v4.mmdb")
+ .loadAsnDataFileV6("dat/asn_v6.mmdb")
+ .build();
+ @Test
+ public void testPrivateIP() {
+ Assert.assertEquals(ipLookup.countryLookup("192.168.10.123"), "Private IP");
+ }
+
+ @Test(expected=IllegalArgumentException.class)
+ public void testIpLookupIllegalArguments(){
+ ipLookup.countryLookup("");
+ ipLookup.countryLookup("123");
+
+ }
@Test
public void testIpLookup() {
-
- IpLookupV2 ipLookup = new IpLookupV2.Builder(false)
- .loadDataFileV4("dat/ip_v4_built_in.mmdb")
- .loadDataFilePrivateV4("dat/ip_v4_user_defined_xj.mmdb")
- .loadDataFileV6("dat/ip_v6_built_in.mmdb")
- .loadDataFilePrivateV6("dat/ip_v6_user_defined.mmdb")
- .loadAsnDataFile("dat/asn_v4.mmdb")
- .loadAsnDataFileV6("dat/asn_v6.mmdb")
- .build();
+ logger.info(ipLookup.locationLookupDetail("116.178.179.36"));
+ logger.info(ipLookup.countryLookup("192.168.10.1"));
logger.info(ipLookup.administrativeAreaLookupDetail("1.1.1.1"));
- logger.info(ipLookup.locationLookupDetail("1.1.1.1"));
+ logger.info(ipLookup.locationLookupDetail("220.158.208.254"));
logger.info(ipLookup.administrativeAreaLookupDetail("220.158.208.254"));
logger.info(ipLookup.locationLookupDetail("220.158.208.254"));
-
logger.info( ipLookup.provinceLookup("217.71.108.0"));
logger.info(ipLookup.cityLookup("217.71.108.0"));
logger.info(ipLookup.cityLookupDetail("217.71.108.0"));
@@ -33,22 +50,34 @@ public class IpLookupV2Test {
logger.info(ipLookup.latLngLookup("217.71.108.0"));
logger.info(ipLookup.cityLookupDetail("120.221.155.223"));
logger.info(ipLookup.cityLatLngLookup("120.221.155.223"));
- logger.info(ipLookup.asnLookup("120.221.155.223"));
- logger.info(ipLookup.asnLookup("203.187.160.135"));
- logger.info(ipLookup.asnLookup("116.128.133.102"));
- logger.info(ipLookup.asnLookupInfo("116.128.133.102"));
- logger.info(ipLookup.asnLookupDetail("116.128.133.102"));
- logger.info(ipLookup.asnLookup("2001:4860:4860::8888"));
logger.info(ipLookup.cityLookupDetail("202.106.0.20"));
logger.info(ipLookup.ispLookup("123.139.226.221"));
logger.info(ipLookup.organizationLookup("123.139.226.221"));
logger.info(ipLookup.ispLookup("116.178.179.36"));
logger.info(ipLookup.organizationLookup("116.178.179.36"));
-
+ logger.info(ipLookup.infoLookupToJson("192.168.10.1"));
+ logger.info(ipLookup.infoLookupToCSV("120.221.155.223"));
+ logger.info(ipLookup.infoLookupToJson("120.221.155.223"));
}
+ @Test
+ public void testAsnLookup() {
+
+ logger.info(ipLookup.asnLookup("120.221.155.223"));
+ logger.info(ipLookup.asnLookup("203.187.160.135"));
+ logger.info(ipLookup.asnLookup("116.128.133.102"));
+ logger.info(ipLookup.asnLookupInfo("116.128.133.102"));
+ logger.info(ipLookup.asnLookupDetail("116.128.133.102"));
+ logger.info(ipLookup.asnLookup("2001:4860:4860::8888"));
+ logger.info(ipLookup.asnLookup("0.1.1.1"));
+
+
+ }
+
+
+