Explorar el Código

update 优化 获取地址支持IPv6逻辑

秋辞未寒 hace 1 año
padre
commit
1c5ae2f168

+ 8 - 1
ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/utils/ip/AddressUtils.java

@@ -22,14 +22,21 @@ public class AddressUtils {
     public static String getRealAddressByIP(String ip) {
         // 处理空串并过滤HTML标签
         ip = HtmlUtil.cleanHtmlTag(StringUtils.blankToDefault(ip,""));
+        boolean isIPv6 = NetUtils.isIPv6(ip);
         // 判断是否为IPv4或IPv6,如果不是则返回未知地址
-        if (!NetUtils.isIPv4(ip) && !NetUtils.isIPv6(ip)) {
+        if (!NetUtils.isIPv4(ip) && !isIPv6) {
             return UNKNOWN;
         }
         // 内网不查询
         if (NetUtils.isInnerIPv6(ip) || NetUtils.isInnerIP(ip)) {
             return "内网IP";
         }
+        // 不支持IPv6,不再进行没有必要的IP地址信息的解析,直接返回
+        if (isIPv6) {
+            log.warn("ip2region不支持IPV6地址解析:{}", ip);
+            // 如有需要,可自行实现IPv6地址信息解析逻辑,并在这里返回
+            return "未知";
+        }
         return RegionUtils.getCityInfo(ip);
     }