diff options
| author | doufenghu <[email protected]> | 2022-11-14 19:25:33 +0800 |
|---|---|---|
| committer | doufenghu <[email protected]> | 2022-11-14 19:25:33 +0800 |
| commit | 03ddefb51352a431686dea1de22e37a34bbe26a7 (patch) | |
| tree | 0894767d8a50ca9eb749f54a6fac3019f3e4072c | |
| parent | 85af83a9a3e38d2e90c9566af5aa43d800fa22f1 (diff) | |
feature(ipLookupV2,AsnLookup) 基于ASN库获取IP地址所属组织
5 files changed, 31 insertions, 3 deletions
diff --git a/src/main/java/com/zdjizhi/utils/AbstractIpLookup.java b/src/main/java/com/zdjizhi/utils/AbstractIpLookup.java index edd055b..7639d72 100644 --- a/src/main/java/com/zdjizhi/utils/AbstractIpLookup.java +++ b/src/main/java/com/zdjizhi/utils/AbstractIpLookup.java @@ -116,6 +116,14 @@ public abstract class AbstractIpLookup { /** * + * 获取IP 所属AS的组织 + * @param ip ip地址 + * @return String asn号 + */ + public abstract String asnLookupOrganization(String ip); + + /** + * * 获取IP 所属AS的组织+国家代码 * @param ip ip地址 * @return String asn号 @@ -123,6 +131,7 @@ public abstract class AbstractIpLookup { public abstract String asnLookupInfo(String ip); + /** * * 获取AS号与组织信息 diff --git a/src/main/java/com/zdjizhi/utils/AsnLookup.java b/src/main/java/com/zdjizhi/utils/AsnLookup.java index d1d45b8..6b7f21b 100644 --- a/src/main/java/com/zdjizhi/utils/AsnLookup.java +++ b/src/main/java/com/zdjizhi/utils/AsnLookup.java @@ -376,6 +376,14 @@ public class AsnLookup { } + public String asnLookupOrganization(String ip) { + LocationResponseV2 response = getResponse(ip); + if (StringUtil.isEmpty(response) || response.isPrivateIP()) { + return UNKNOWN; + } + return response.getOrganization(); + } + public String asnLookupInfo(String ip) { LocationResponseV2 response = getResponse(ip); if (StringUtil.isEmpty(response) || response.isPrivateIP()) { @@ -387,6 +395,7 @@ public class AsnLookup { + public String asnLookupDetail(String ip) { LocationResponseV2 response = getResponse(ip); @@ -399,6 +408,8 @@ public class AsnLookup { + + private LocationResponseV2 getResponse(String ip) { LocationResponseV2 response = null; if (IPUtil.isIPv4Address(ip) || IPUtil.isIPv6Address(ip)) { diff --git a/src/main/java/com/zdjizhi/utils/IpLookup.java b/src/main/java/com/zdjizhi/utils/IpLookup.java index 80af908..70b0e27 100644 --- a/src/main/java/com/zdjizhi/utils/IpLookup.java +++ b/src/main/java/com/zdjizhi/utils/IpLookup.java @@ -4,7 +4,6 @@ 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; @@ -540,6 +539,11 @@ public final class IpLookup extends AbstractIpLookup{ } + @Override + public String asnLookupOrganization(String ip) { + return asnLookup.asnLookupOrganization(ip); + } + @Override public String asnLookupInfo(String ip) { diff --git a/src/main/java/com/zdjizhi/utils/IpLookupV2.java b/src/main/java/com/zdjizhi/utils/IpLookupV2.java index c816891..1f451bc 100644 --- a/src/main/java/com/zdjizhi/utils/IpLookupV2.java +++ b/src/main/java/com/zdjizhi/utils/IpLookupV2.java @@ -172,7 +172,7 @@ public final class IpLookupV2 extends AbstractIpLookup{ } } catch (Exception e) { - logger.error("Unsupported GeoIP2 *.mmdb database: expected either File path or Stream."); + logger.error("Unsupported GeoIP2 *.mmdb database: expected either File path or Stream. " + e); } @@ -708,7 +708,10 @@ public final class IpLookupV2 extends AbstractIpLookup{ return asnLookup.asnLookup(ip); } - + @Override + public String asnLookupOrganization(String ip) { + return asnLookup.asnLookupOrganization(ip); + } @Override public String asnLookupInfo(String ip) { return asnLookup.asnLookupInfo(ip); diff --git a/src/test/java/com/zdjizhi/test/IpLookupV2Test.java b/src/test/java/com/zdjizhi/test/IpLookupV2Test.java index 88c7de5..7a47e86 100644 --- a/src/test/java/com/zdjizhi/test/IpLookupV2Test.java +++ b/src/test/java/com/zdjizhi/test/IpLookupV2Test.java @@ -87,6 +87,7 @@ public class IpLookupV2Test { logger.info(ipLookup.asnLookupDetail("116.128.133.102")); logger.info(ipLookup.asnLookup("2001:4860:4860::8888")); logger.info(ipLookup.asnLookup("1.1.1.1")); + logger.info(ipLookup.asnLookupOrganization("116.128.133.102")); } |
