summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authordoufenghu <[email protected]>2022-11-14 19:25:33 +0800
committerdoufenghu <[email protected]>2022-11-14 19:25:33 +0800
commit03ddefb51352a431686dea1de22e37a34bbe26a7 (patch)
tree0894767d8a50ca9eb749f54a6fac3019f3e4072c
parent85af83a9a3e38d2e90c9566af5aa43d800fa22f1 (diff)
feature(ipLookupV2,AsnLookup) 基于ASN库获取IP地址所属组织
-rw-r--r--src/main/java/com/zdjizhi/utils/AbstractIpLookup.java9
-rw-r--r--src/main/java/com/zdjizhi/utils/AsnLookup.java11
-rw-r--r--src/main/java/com/zdjizhi/utils/IpLookup.java6
-rw-r--r--src/main/java/com/zdjizhi/utils/IpLookupV2.java7
-rw-r--r--src/test/java/com/zdjizhi/test/IpLookupV2Test.java1
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"));
}