diff options
| author | doufenghu <[email protected]> | 2023-03-26 20:35:46 +0800 |
|---|---|---|
| committer | doufenghu <[email protected]> | 2023-03-26 20:35:46 +0800 |
| commit | 3b1446d1f476f660a2665986a1af85565cda1824 (patch) | |
| tree | 55c18e2919b37dce46e95171b04d27187294a40d | |
| parent | 854515a77687c19507157895c0cd3bbd5535fed3 (diff) | |
删除过期IPLookup工具类
| -rw-r--r-- | pom.xml | 9 | ||||
| -rw-r--r-- | src/main/java/com/zdjizhi/crypt/AESUtil.java | 22 | ||||
| -rw-r--r-- | src/main/java/com/zdjizhi/utils/IpLookup.java | 741 | ||||
| -rw-r--r-- | src/test/java/com/zdjizhi/test/IPBenchMarkTest.java | 3 | ||||
| -rw-r--r-- | src/test/java/com/zdjizhi/test/IpLookupTest.java | 86 |
5 files changed, 14 insertions, 847 deletions
@@ -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")); - - - - - - - - } - - - - - - - -} - |
