summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authordoufenghu <[email protected]>2023-03-26 20:35:46 +0800
committerdoufenghu <[email protected]>2023-03-26 20:35:46 +0800
commit3b1446d1f476f660a2665986a1af85565cda1824 (patch)
tree55c18e2919b37dce46e95171b04d27187294a40d
parent854515a77687c19507157895c0cd3bbd5535fed3 (diff)
删除过期IPLookup工具类
-rw-r--r--pom.xml9
-rw-r--r--src/main/java/com/zdjizhi/crypt/AESUtil.java22
-rw-r--r--src/main/java/com/zdjizhi/utils/IpLookup.java741
-rw-r--r--src/test/java/com/zdjizhi/test/IPBenchMarkTest.java3
-rw-r--r--src/test/java/com/zdjizhi/test/IpLookupTest.java86
5 files changed, 14 insertions, 847 deletions
diff --git a/pom.xml b/pom.xml
index d469732..17a9875 100644
--- a/pom.xml
+++ b/pom.xml
@@ -7,7 +7,7 @@
<artifactId>galaxy</artifactId>
<packaging>jar</packaging>
<name>galaxy</name>
- <version>1.1.1</version>
+ <version>1.1.2</version>
<description>galaxy tools for common</description>
<url>http://www.zdjizhi.com/galaxy-tool</url>
@@ -203,11 +203,7 @@
<version>2.10</version>
</dependency>
- <dependency>
- <groupId>com.maxmind.geoip</groupId>
- <artifactId>geoip-api</artifactId>
- <version>1.3.1</version>
- </dependency>
+
<dependency>
<groupId>com.maxmind.geoip2</groupId>
@@ -221,7 +217,6 @@
<version>1.4.0</version>
</dependency>
-
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
diff --git a/src/main/java/com/zdjizhi/crypt/AESUtil.java b/src/main/java/com/zdjizhi/crypt/AESUtil.java
index 69c4ed5..aae56a2 100644
--- a/src/main/java/com/zdjizhi/crypt/AESUtil.java
+++ b/src/main/java/com/zdjizhi/crypt/AESUtil.java
@@ -5,15 +5,15 @@
*
*/
package com.zdjizhi.crypt;
- import java.security.Key;
-
+ import org.apache.commons.codec.binary.Base64;
+ import org.apache.commons.codec.digest.DigestUtils;
+
+ import java.security.Key;
+
import javax.crypto.Cipher;
import javax.crypto.KeyGenerator;
import javax.crypto.SecretKey;
- import javax.crypto.spec.SecretKeySpec;
-
- import org.apache.commons.codec.binary.Base64;
- import org.apache.commons.codec.digest.DigestUtils;
+ import javax.crypto.spec.SecretKeySpec;
/**
*
@@ -118,9 +118,9 @@ package com.zdjizhi.crypt;
* @return String Base64编码密钥
* @throws Exception
*/
- public static String initKeyString() throws Exception
- {
- return new String(Base64.encodeBase64(initKey()));
+ public static String initKeyString() throws Exception
+ {
+ return new String(Base64.encodeBase64(initKey()));
}
/**
* <p>获取密钥</p>
@@ -130,7 +130,7 @@ package com.zdjizhi.crypt;
*/
public static byte[] getKey(String key) throws Exception
{
- return Base64.decodeBase64(key.getBytes());
+ return Base64.decodeBase64(key.getBytes());
}
/**
* <p>摘要处理</p>
@@ -139,7 +139,7 @@ package com.zdjizhi.crypt;
*/
public static String shaHex(byte[] data)
{
- return DigestUtils.md5Hex(data);
+ return DigestUtils.md5Hex(data);
}
/**
* <p>摘要数据验证</p>
diff --git a/src/main/java/com/zdjizhi/utils/IpLookup.java b/src/main/java/com/zdjizhi/utils/IpLookup.java
deleted file mode 100644
index 70b0e27..0000000
--- a/src/main/java/com/zdjizhi/utils/IpLookup.java
+++ /dev/null
@@ -1,741 +0,0 @@
-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 java.io.File;
-import java.io.IOException;
-import java.net.InetAddress;
-import java.net.URL;
-/**
- * @ClassName IpLookup
- * @Description 对IP定位查找工具类
- * @Author 中电积至有限公司 darnell
- * @Date 2020-05-8 20:01
- * @Version 1.0.2
- * @deprecated
- * *<p> Use {@link IpLookupV2} instead.
- *
- **/
-@Deprecated
-public final class IpLookup extends AbstractIpLookup{
-
- enum ServiceEnum {
- PRIVATE, PUBLIC
- }
- public final static String DEFAULT_DATABASE_PATH = "dat";
- private final static String DEFAULT_DB_IP_PUBLIC = "ip.mmdb";
- private final static String DEFAULT_DB_IP_PUBLIC_V4 = "ip_v4.mmdb";
- private final static String DEFAULT_DB_IP_PUBLIC_V6 = "ip_v6.mmdb";
- private final static String DEFAULT_DB_IP_PRIVATE = "ip_private.mmdb";
- private final static String DEFAULT_DB_IP_PRIVATE_V4 = "ip_private_v4.mmdb";
- private final static String DEFAULT_DB_IP_PRIVATE_V6 = "ip_private_v6.mmdb";
-
- private AsnLookup asnLookup;
-
- private static GalaxyDataBaseReader ipLocationPublicReader;
- private static GalaxyDataBaseReader ipLocationPublicReaderV4;
- private static GalaxyDataBaseReader ipLocationPublicReaderV6;
-
- private static GalaxyDataBaseReader ipLocationPrivateReader;
- private static GalaxyDataBaseReader ipLocationPrivateReaderV4;
- private static GalaxyDataBaseReader ipLocationPrivateReaderV6;
-
-
-
-
- synchronized void init(Builder builder) {
- try {
-
- if (builder.isDefaultDB) {
-
- File dbPublicFile = new File(System.getProperty("user.dir") + File.separator + DEFAULT_DATABASE_PATH + File.separator
- + DEFAULT_DB_IP_PUBLIC);
-
- if (!dbPublicFile.exists()) {
- URL url = IpLookup.class.getResource("/"+ DEFAULT_DATABASE_PATH + "/" + DEFAULT_DB_IP_PUBLIC);
- if (url != null) {
- dbPublicFile = new File(url.getPath());
- }
- }
-
- File dbPublicV4File = new File(System.getProperty("user.dir") + File.separator + DEFAULT_DATABASE_PATH + File.separator
- + DEFAULT_DB_IP_PUBLIC_V4);
-
- if (!dbPublicV4File.exists()) {
- URL url = IpLookup.class.getResource("/"+ DEFAULT_DATABASE_PATH + "/" + DEFAULT_DB_IP_PUBLIC_V4);
- if (url != null) {
- dbPublicV4File = new File(url.getPath());
- }
- }
-
- File dbPublicV6File = new File(System.getProperty("user.dir") + File.separator + DEFAULT_DATABASE_PATH + File.separator
- + DEFAULT_DB_IP_PUBLIC_V6);
- if (!dbPublicV6File.exists()) {
- URL url = IpLookup.class.getResource("/"+ DEFAULT_DATABASE_PATH + "/" + DEFAULT_DB_IP_PUBLIC_V6);
- if (url != null) {
- dbPublicV6File = new File(url.getPath());
- }
- }
-
- File dbPrivateFile = new File(System.getProperty("user.dir") + File.separator + DEFAULT_DATABASE_PATH + File.separator
- +DEFAULT_DB_IP_PRIVATE);
-
- if (!dbPrivateFile.exists()) {
- URL url = IpLookup.class.getResource("/"+ DEFAULT_DATABASE_PATH + "/" + DEFAULT_DB_IP_PRIVATE);
- if (url != null) {
- dbPrivateFile = new File(url.getPath());
- }
- }
-
-
- File dbPrivateV4File = new File(System.getProperty("user.dir") + File.separator + DEFAULT_DATABASE_PATH + File.separator
- + DEFAULT_DB_IP_PRIVATE_V4);
-
- if (!dbPrivateV4File.exists()) {
- URL url = IpLookup.class.getResource("/"+ DEFAULT_DATABASE_PATH + "/" + DEFAULT_DB_IP_PRIVATE_V4);
- if (url != null) {
- dbPrivateV4File = new File(url.getPath());
- }
- }
-
- File dbPrivateV6File = new File(System.getProperty("user.dir") + File.separator + DEFAULT_DATABASE_PATH + File.separator
- + DEFAULT_DB_IP_PRIVATE_V6);
- if (!dbPrivateV6File.exists()) {
- URL url = IpLookup.class.getResource("/"+ DEFAULT_DATABASE_PATH + "/" + DEFAULT_DB_IP_PRIVATE_V6);
- if (url != null) {
- dbPrivateV6File = new File(url.getPath());
- }
- }
-
- if (dbPublicFile.exists()) {
- ipLocationPublicReader = new GalaxyDataBaseReader.Builder(dbPublicFile).withCache(new CHMCache()).build();
- }
- if (dbPublicV4File.exists()) {
- ipLocationPublicReaderV4 = new GalaxyDataBaseReader.Builder(dbPublicV4File).withCache(new CHMCache()).build();
- }
-
- if (dbPublicV6File.exists()) {
- ipLocationPublicReaderV6 = new GalaxyDataBaseReader.Builder(dbPublicV6File).withCache(new CHMCache()).build();
- }
-
- if (dbPrivateFile.exists()) {
- ipLocationPrivateReader = new GalaxyDataBaseReader.Builder(dbPrivateFile).withCache(new CHMCache()).build();
- }
-
- if (dbPrivateV4File.exists()) {
- ipLocationPrivateReaderV4 = new GalaxyDataBaseReader.Builder(dbPrivateV4File).withCache(new CHMCache()).build();
- }
-
- if (dbPrivateV6File.exists()) {
- ipLocationPrivateReaderV6 = new GalaxyDataBaseReader.Builder(dbPrivateV6File).withCache(new CHMCache()).build();
- }
-
-
- asnLookup = new AsnLookup.Builder(true).build();
-
- } else {
-
-
- if (StringUtil.isNotBlank(builder.ipDatabasePublicFile)) {
- 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();
- }
-
- if (StringUtil.isNotBlank(builder.ipDatabasePublicFileV6)) {
- 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();
- }
-
- if (StringUtil.isNotBlank(builder.ipDatabasePrivateFileV4)) {
- 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();
- }
-
- asnLookup = new AsnLookup.Builder(false)
- .loadDataFile(builder.asnDatabasePublicFile)
- .loadDataFileV4(builder.asnDatabasePublicFileV4)
- .loadDataFileV6(builder.asnDatabasePublicFileV6)
- .loadDataFilePrivate(builder.asnDatabasePrivateFile)
- .loadDataFilePrivateV4(builder.asnDatabasePrivateFileV4)
- .loadDataFilePrivateV6(builder.asnDatabasePrivateFileV6)
- .build();
-
-
- }
-
- } catch (Exception e) {
-
- logger.error("IpLookup init data error, please check your file path!");
-
- }
-
-
- }
-
-
- private IpLookup(Builder builder) {
- init(builder);
- }
-
-
-
- /**
- * 加载mmdb数据字典文件,内部生成mmdb动态库。
- *
- * 1.默认记载IP库,使用方式如下:
- * IpLookup ipLookup = new IpLookup.Builder(true).build();
- * 自动加载应用dat目录下的库文件,命名为:all_ip_info_v4.mmdb与all_ip_info_v6.mmdb库。
- *
- * 2.手动加载IP库,使用方式如下:
- * <p>
- * IpLookup ipLookup = new IpLookup.Builder(false).loadDataFileV4("D:\\galaxy-tool\\dat\\ip.mmdb").
- * loadDataFileV6("D:\\galaxy-tool\\dat\\all_ip_info_v6.mmdb").build();
- *
- * </p>
- */
- public static final class Builder {
- String ipDatabasePublicFile;
- String ipDatabasePublicFileV4;
- String ipDatabasePublicFileV6;
-
- String ipDatabasePrivateFile;
- String ipDatabasePrivateFileV4;
- String ipDatabasePrivateFileV6;
-
- String asnDatabasePublicFile;
- String asnDatabasePublicFileV4;
- String asnDatabasePublicFileV6;
-
- String asnDatabasePrivateFile;
- String asnDatabasePrivateFileV4;
- String asnDatabasePrivateFileV6;
-
- boolean isDefaultDB;
-
- /**
- *
- * @param isDefaultDB <code>false</code> 手动指定IP库路径 <code>true</code> 使用默认路径
- */
- public Builder(boolean isDefaultDB) {
- this.isDefaultDB = isDefaultDB;
- }
-
- /**
- *
- * @param ipDatabasePublicFile 加载IPv4与IPV6 mmdb库文件
- * @return
- */
- public Builder loadDataFile(String ipDatabasePublicFile) {
- this.ipDatabasePublicFile = ipDatabasePublicFile;
- return this;
- }
-
- /**
- *
- * @param ipDatabasePublicFileV4 加载IPv4 mmdb库文件
- * @return
- */
- public Builder loadDataFileV4(String ipDatabasePublicFileV4) {
- this.ipDatabasePublicFileV4 = ipDatabasePublicFileV4;
- return this;
- }
-
- /**
- *
- * @param ipDatabasePublicFileV6 加载IPv6 mmdb库文件
- * @return
- */
- public Builder loadDataFileV6(String ipDatabasePublicFileV6) {
- this.ipDatabasePublicFileV6 = ipDatabasePublicFileV6;
- return this;
- }
-
- /**
- *
- * @param ipDatabasePrivateFile 加载用户自定义IPv4与IPv6 mmdb库文件
- * @return
- */
- public Builder loadDataFilePrivate(String ipDatabasePrivateFile) {
- this.ipDatabasePrivateFile = ipDatabasePrivateFile;
- return this;
- }
-
- /**
- *
- * @param ipDatabasePrivateFileV4 加载用户自定义IPv4 mmdb库文件
- * @return
- */
- public Builder loadDataFilePrivateV4(String ipDatabasePrivateFileV4) {
- this.ipDatabasePrivateFileV4 = ipDatabasePrivateFileV4;
- return this;
- }
-
- /**
- *
- * @param ipDatabasePrivateFileV6 加载用户自定义IPv6 mmdb库文件
- * @return
- */
- public Builder loadDataFilePrivateV6(String ipDatabasePrivateFileV6) {
- this.ipDatabasePrivateFileV6 = ipDatabasePrivateFileV6;
- return this;
- }
-
-
-
- /**
- *
- * @param asnDatabasePublicFile 加载asn IPv4与IPv6库
- * @return
- */
- public Builder loadAsnDataFile(String asnDatabasePublicFile) {
- this.asnDatabasePublicFile = asnDatabasePublicFile;
- return this;
- }
-
-
- /**
- *
- * @param asnDatabasePublicFileV4 加载asn IPv4 mmdb库文件
- * @return
- */
- public Builder loadAsnDataFileV4(String asnDatabasePublicFileV4) {
- this.asnDatabasePublicFileV4 = asnDatabasePublicFileV4;
- return this;
- }
-
-
- /**
- *
- * @param asnDatabasePublicFileV6 加载asn IPv6 mmdb库文件
- * @return
- */
- public Builder loadAsnDataFileV6(String asnDatabasePublicFileV6) {
- this.asnDatabasePublicFileV6 = asnDatabasePublicFileV6;
- return this;
- }
-
-
- /**
- *
- * @param asnDatabasePrivateFile 加载asn用户自定义 IPv4与IPv6库
- * @return
- */
- public Builder loadAsnDataFilePrivate(String asnDatabasePrivateFile) {
- this.asnDatabasePrivateFile = asnDatabasePrivateFile;
- return this;
- }
-
- /**
- *
- * @param asnDatabasePrivateFileV4 加载asn用户自定义 IPv4 mmdb库文件
- * @return
- */
- public Builder loadAsnDataFilePrivateV4(String asnDatabasePrivateFileV4) {
- this.asnDatabasePrivateFileV4 = asnDatabasePrivateFileV4;
- return this;
- }
-
-
-
- /**
- *
- * @param asnDatabasePrivateFileV6 加载用户自定义asn IPv6 mmdb库文件
- * @return
- */
- public Builder loadAsnDataFilePrivateV6(String asnDatabasePrivateFileV6) {
- this.asnDatabasePrivateFileV6 = asnDatabasePrivateFileV6;
- return this;
- }
-
- /**
- * 构建对象
- * @return
- * @throws IOException
- */
- public IpLookup build() {
- return new IpLookup(this);
- }
-
- }
-
- @Override
- public String countryLookup(String ip) {
-
- LocationResponse response = getResponse(ip);
- if (StringUtil.isEmpty(response)) {
- return UNKNOWN;
- }
- if (response.isPrivateIP()) {
- return PRIVATE_IP;
- }
-
- return StringUtil.setDefaultIfEmpty(response.getCountry(), UNKNOWN).toString() ;
- }
-
- @Override
- public String cityLookupDetail(String ip) {
-
- LocationResponse response = getResponse(ip);
-
- if (StringUtil.isEmpty(response)) {
- return UNKNOWN;
- }
- if (response.isPrivateIP()) {
- return PRIVATE_IP;
- }
-
- return Joiner.on(LOCATION_SEPARATOR).useForNull("").join(response.getCountry(), response.getProvince(), response.getCity());
-
- }
-
- @Override
- public String administrativeAreaLookupDetail(String ip) {
- throw new IllegalArgumentException("Unsupported Method administrativeAreaLookupDetail");
- }
-
- @Override
- public String locationLookupDetail(String ip) {
- throw new IllegalArgumentException("Unsupported Method locationLookupDetail");
- }
-
- @Override
- public String cityLookup(String ip) {
- LocationResponse response = getResponse(ip);
-
- if (StringUtil.isEmpty(response)) {
- return UNKNOWN;
- }
- if (response.isPrivateIP()) {
- return PRIVATE_IP;
- }
-
- return StringUtil.setDefaultIfEmpty(response.getCity(), UNKNOWN).toString() ;
-
- }
-
- @Override
- public String countryCodeLookup(String ip) {
- LocationResponse response = getResponse(ip);
- if (StringUtil.isEmpty(response)) {
- return UNKNOWN;
- }
- return StringUtil.setDefaultIfEmpty(response.getCountryCode(), UNKNOWN).toString() ;
- }
-
- @Override
- public String regionCodeLookup(String ip) {
- LocationResponse response = getResponse(ip);
- if (StringUtil.isEmpty(response)) {
- return UNKNOWN;
- }
- return StringUtil.setDefaultIfEmpty(response.getAreaCode(), UNKNOWN).toString() ;
- }
-
- @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)) {
- return UNKNOWN;
- }
- if (response.isPrivateIP()) {
- return PRIVATE_IP;
- }
-
- return StringUtil.setDefaultIfEmpty(response.getProvince(), UNKNOWN).toString() ;
- }
-
- @Override
- public String ispLookup(String ip) {
- LocationResponse response = getResponse(ip);
- if (StringUtil.isEmpty(response)) {
- return UNKNOWN;
- }
- if (response.isPrivateIP()) {
- return PRIVATE_IP;
- }
-
- return StringUtil.setDefaultIfEmpty(response.getIsp(), UNKNOWN).toString() ;
- }
-
- @Override
- public String organizationLookup(String ip) {
- LocationResponse response = getResponse(ip);
- if (StringUtil.isEmpty(response)) {
- return UNKNOWN;
- }
- if (response.isPrivateIP()) {
- return PRIVATE_IP;
- }
-
- return StringUtil.setDefaultIfEmpty(response.getOrganization(), UNKNOWN).toString() ;
- }
-
-
- @Override
- public String latLngLookup(String ip) {
-
- LocationResponse response = getResponse(ip);
- if (StringUtil.isEmpty(response) || response.isPrivateIP()) {
- return UNKNOWN;
- }
-
- return Joiner.on(LATLNG_SEPARATOR).skipNulls().join(response.getLatitude(), response.getLongitude());
-
- }
-
-
- @Override
- public String cityLatLngLookup(String ip) {
- return Joiner.on(OBJECT_SEPARATOR).skipNulls().join(cityLookup(ip), latLngLookup(ip));
- }
-
- @Override
- public String asnLookup(String ip) {
- return asnLookup.asnLookup(ip);
-
- }
-
- @Override
- public String asnLookupOrganization(String ip) {
- return asnLookup.asnLookupOrganization(ip);
- }
-
-
- @Override
- public String asnLookupInfo(String ip) {
- return asnLookup.asnLookupInfo(ip);
- }
-
- @Override
- public String asnLookupDetail(String ip) {
- return asnLookup.asnLookupDetail(ip);
- }
-
- private LocationResponse getResponse(String ip) {
-
- if (!IPUtil.isIP(ip) && !IPUtil.isIPv6Address(ip)) {
- throw new IllegalArgumentException("unknown ip format :" + ip );
- }
-
- LocationResponse response = new Context(new PrivateReader()).executeStrategy(ip);
-
- if (StringUtil.isEmpty(response)) {
- response = new Context(new PublicReader()).executeStrategy(ip);
- }
-
- if (StringUtil.isEmpty(response)) {
- response = new Context(new InnerReader()).executeStrategy(ip);
- }
-
- return response;
- }
-
-
-
-
-
- private GalaxyDataBaseReader getIpDataBaseReaderV4(String service) {
-
- if (service.equalsIgnoreCase(ServiceEnum.PRIVATE.name())) {
- if (StringUtil.isNotEmpty(ipLocationPrivateReaderV4)) {
- return ipLocationPrivateReaderV4;
- } else {
- return ipLocationPrivateReader;
- }
- } else {
- if (StringUtil.isNotEmpty(ipLocationPublicReaderV4)) {
- return ipLocationPublicReaderV4;
- } else {
- return ipLocationPublicReader;
- }
- }
-
- }
-
- private GalaxyDataBaseReader getIpDataBaseReaderV6(String service) {
-
- if (service.equalsIgnoreCase(ServiceEnum.PRIVATE.name())) {
- if (StringUtil.isNotEmpty(ipLocationPrivateReaderV6)) {
- return ipLocationPrivateReaderV6;
- } else {
- return ipLocationPrivateReader;
- }
- } else {
- if (StringUtil.isNotEmpty(ipLocationPublicReaderV6)) {
- return ipLocationPublicReaderV6;
- } else {
- return ipLocationPublicReader;
- }
- }
-
- }
-
-
-
-
-
-
-
- interface Strategy {
- LocationResponse getResponse(String ip);
- }
-
- /**
- * 用户自定义IP库的执行策略
- */
- class PrivateReader implements Strategy {
- @Override
- public LocationResponse getResponse(String ip) {
- GalaxyDataBaseReader dataBaseReader = null;
- LocationResponse response = null;
- try {
- InetAddress ipAddress = InetAddress.getByName(ip);
-
- if (IPUtil.isIP(ip)) {
- dataBaseReader = getIpDataBaseReaderV4(ServiceEnum.PRIVATE.name());
- } else if (IPUtil.isIPv6Address(ip)) {
- dataBaseReader = getIpDataBaseReaderV6(ServiceEnum.PRIVATE.name());
- }
-
- if (StringUtil.isNotEmpty(dataBaseReader)) {
- response = dataBaseReader.location(ipAddress);
- }
-
- } catch(AddressNotFoundException addressNotFoundException) {
- logger.debug("Address not found ,ip is :" + ip);
- } catch (Exception e) {
- throw new IllegalArgumentException("ip address :" + ip +", parser error " + e);
- }
- return response;
- }
- }
- /**
- * 第三方服务库的执行策略,例如maxmind、IPDAT
- */
- class PublicReader implements Strategy {
- @Override
- public LocationResponse getResponse(String ip) {
- GalaxyDataBaseReader dataBaseReader = null;
- LocationResponse response = null;
- try {
- InetAddress ipAddress = InetAddress.getByName(ip);
-
- if (IPUtil.isIP(ip)) {
- dataBaseReader = getIpDataBaseReaderV4(ServiceEnum.PUBLIC.name());
-
- } else if (IPUtil.isIPv6Address(ip)) {
- dataBaseReader = getIpDataBaseReaderV6(ServiceEnum.PUBLIC.name());
-
- }
-
- if (StringUtil.isNotEmpty(dataBaseReader)) {
- response = dataBaseReader.location(ipAddress);
- }
-
- } catch(AddressNotFoundException addressNotFoundException) {
- logger.debug("Address not found ,ip is :" + ip);
- } catch (Exception e) {
- throw new IllegalArgumentException("ip address :" + ip +", parser error " + e);
- }
- return response;
-
-
- }
- }
-
- /**
- * 私有IP执行策略
- */
- class InnerReader implements Strategy {
- @Override
- public LocationResponse getResponse(String ip) {
- LocationResponse response = null;
- if(IPUtil.isIP(ip) && IPUtil.internalIp(ip)) {
- response = new LocationResponse();
- response.setCountry(null);
- response.setCity(null);
- response.setProvince(null);
- response.setAsn(null);
- response.setIsp(null);
- response.setLatitude(null);
- response.setLongitude(null);
- response.setAreaCode(null);
- response.setPrivateIP(true);
- }
- return response;
- }
- }
-
-
- class Context {
- private Strategy strategy;
-
- public Context(Strategy strategy) {
- this.strategy = strategy;
- }
-
- public LocationResponse executeStrategy(String ip) {
- return strategy.getResponse(ip);
- }
-
- }
-
-
-
-
-}
-
-
-
-
-
-
-
-
-
-
-
diff --git a/src/test/java/com/zdjizhi/test/IPBenchMarkTest.java b/src/test/java/com/zdjizhi/test/IPBenchMarkTest.java
index 02702a5..e1cb266 100644
--- a/src/test/java/com/zdjizhi/test/IPBenchMarkTest.java
+++ b/src/test/java/com/zdjizhi/test/IPBenchMarkTest.java
@@ -1,7 +1,6 @@
package com.zdjizhi.test;
import com.zdjizhi.utils.AsnLookup;
-import com.zdjizhi.utils.IpLookup;
import com.zdjizhi.utils.IpLookupV2;
import org.apache.log4j.Logger;
@@ -13,7 +12,7 @@ import java.net.InetAddress;
import java.util.Random;
public class IPBenchMarkTest {
- private final static Logger logger = Logger.getLogger(IpLookupTest.class);
+ private final static Logger logger = Logger.getLogger(IpLookupV2Test.class);
private final static boolean TRACE = false;
private final static int COUNT = 1000000;
diff --git a/src/test/java/com/zdjizhi/test/IpLookupTest.java b/src/test/java/com/zdjizhi/test/IpLookupTest.java
deleted file mode 100644
index e6861c7..0000000
--- a/src/test/java/com/zdjizhi/test/IpLookupTest.java
+++ /dev/null
@@ -1,86 +0,0 @@
-package com.zdjizhi.test;
-
-import com.zdjizhi.utils.IpLookup;
-import org.apache.log4j.Logger;
-import org.junit.Test;
-
-import java.io.*;
-
-
-public class IpLookupTest {
- Logger logger = Logger.getLogger(IpLookupTest.class);
-
-
- @Test
- public void testIpLookup() {
-
- IpLookup ipLookup = new IpLookup.Builder(false)
- .loadDataFileV4("dat/ip_v4.mmdb")
- .loadDataFilePrivateV4("dat/ip_v4_user_defined_xj.mmdb")
- .loadDataFileV6("dat/ip_v6.mmdb")
- .loadDataFilePrivateV6("dat/ip_v6.mmdb")
- .loadAsnDataFile("dat/asn_v4.mmdb")
- .loadAsnDataFileV6("dat/asn_v6.mmdb")
- .build();
-
- logger.info(ipLookup.cityLookupDetail("239.255.255.250"));
- logger.info(ipLookup.provinceLookup("192.168.50.21"));
- logger.info(ipLookup.cityLookup("192.168.50.21"));
- logger.info(ipLookup.cityLookupDetail("192.168.50.21"));
- logger.info(ipLookup.cityLookup("120.221.155.223"));
- logger.info(ipLookup.countryLookup("2001:4860:4860::8888"));
- logger.info(ipLookup.latLngLookup("120.221.155.223"));
- 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.infoLookupToCSV("116.178.179.36"));
- logger.info(ipLookup.infoLookupToJson("116.178.179.36"));
-
-
-
-
- }
-
-
- @Test
- public void testCountryLookup() throws IOException {
-
- IpLookup ipLookup = new IpLookup.Builder(false)
- .loadDataFileV4("dat/all_ip_coun_city.mmdb")
- .loadDataFileV6("dat/ip_v6.mmdb")
- .loadAsnDataFileV4("dat/asn_v4.mmdb")
- .loadAsnDataFileV6("dat/asn_v6.mmdb")
- .build();
-
- 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.countryCodeLookup("120.221.155.223"));
- logger.info(ipLookup.regionCodeLookup("120.221.155.223"));
-
-
-
-
-
-
-
- }
-
-
-
-
-
-
-
-}
-