From 050f312c564699a17b4c52c121bbe787e8e37fbd Mon Sep 17 00:00:00 2001 From: Looly Date: Tue, 27 Jun 2023 11:10:43 +0800 Subject: [PATCH] =?UTF-8?q?Ipv4Util=20=E6=96=B0=E5=A2=9E=E6=96=B9=E6=B3=95?= =?UTF-8?q?=EF=BC=9A=E6=A3=80=E6=B5=8B=E6=8C=87=E5=AE=9A=20IP=20=E5=9C=B0?= =?UTF-8?q?=E5=9D=80=E6=98=AF=E5=90=A6=E5=8C=B9=E9=85=8D=E9=80=9A=E9=85=8D?= =?UTF-8?q?=E7=AC=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CHANGELOG.md | 1 + .../java/cn/hutool/core/net/Ipv4Util.java | 18 ++++++----- .../java/cn/hutool/core/net/Ipv4UtilTest.java | 32 +++++++++---------- 3 files changed, 27 insertions(+), 24 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 981ec83b9..fdbf1c629 100755 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,7 @@ ### 🐣新特性 * 【core 】 list 为空时,CollUtil.max等返回null而非异常(pr#1027@Gitee) * 【poi 】 ExcelReader.getWriter逻辑变更,当从非文件读取时,获取sheet,而非空表格。 +* 【core 】 Ipv4Util 新增方法:检测指定 IP 地址是否匹配通配符(pr#3171@Github) ### 🐞Bug修复 * 【core 】 修复MapUtil工具使用filter方法构造传入参数结果问题(issue#3162@Github) diff --git a/hutool-core/src/main/java/cn/hutool/core/net/Ipv4Util.java b/hutool-core/src/main/java/cn/hutool/core/net/Ipv4Util.java index 8e320a35c..ed990e71a 100755 --- a/hutool-core/src/main/java/cn/hutool/core/net/Ipv4Util.java +++ b/hutool-core/src/main/java/cn/hutool/core/net/Ipv4Util.java @@ -6,6 +6,7 @@ import cn.hutool.core.lang.Assert; import cn.hutool.core.lang.PatternPool; import cn.hutool.core.lang.Validator; import cn.hutool.core.util.CharUtil; +import cn.hutool.core.util.ReUtil; import cn.hutool.core.util.StrUtil; import java.util.ArrayList; @@ -369,24 +370,25 @@ public class Ipv4Util { /** * 检测指定 IP 地址是否匹配通配符 wildcard * - * @param pattern 通配符,如 192.168.*.1 + * @param wildcard 通配符,如 192.168.*.1 * @param ipAddress 待检测的 IP 地址 * @return 是否匹配 */ - public static boolean matches(String pattern, String ipAddress) { - if (!Validator.isMatchRegex(PatternPool.IPV4, ipAddress)) { + public static boolean matches(String wildcard, String ipAddress) { + if (false == ReUtil.isMatch(PatternPool.IPV4, ipAddress)) { return false; } - String[] patternSegments = pattern.split("\\."); - String[] ipSegments = ipAddress.split("\\."); + final String[] wildcardSegments = wildcard.split("\\."); + final String[] ipSegments = ipAddress.split("\\."); - if (patternSegments.length != ipSegments.length) { + if (wildcardSegments.length != ipSegments.length) { return false; } - for (int i = 0; i < patternSegments.length; i++) { - if (!"*".equals(patternSegments[i]) && !patternSegments[i].equals(ipSegments[i])) { + for (int i = 0; i < wildcardSegments.length; i++) { + if (false == "*".equals(wildcardSegments[i]) + && false == wildcardSegments[i].equals(ipSegments[i])) { return false; } } diff --git a/hutool-core/src/test/java/cn/hutool/core/net/Ipv4UtilTest.java b/hutool-core/src/test/java/cn/hutool/core/net/Ipv4UtilTest.java index a4a7df273..0b9e8505c 100644 --- a/hutool-core/src/test/java/cn/hutool/core/net/Ipv4UtilTest.java +++ b/hutool-core/src/test/java/cn/hutool/core/net/Ipv4UtilTest.java @@ -16,7 +16,7 @@ public class Ipv4UtilTest { @Test public void getMaskBitByIllegalMaskTest() { - ThrowingRunnable getMaskBitByMaskRunnable = () -> Ipv4Util.getMaskBitByMask("255.255.0.255"); + final ThrowingRunnable getMaskBitByMaskRunnable = () -> Ipv4Util.getMaskBitByMask("255.255.0.255"); Assert.assertThrows("非法掩码测试", IllegalArgumentException.class, getMaskBitByMaskRunnable); } @@ -28,15 +28,15 @@ public class Ipv4UtilTest { @Test public void longToIpTest() { - String ip = "192.168.1.255"; + final String ip = "192.168.1.255"; final long ipLong = Ipv4Util.ipv4ToLong(ip); - String ipv4 = Ipv4Util.longToIpv4(ipLong); + final String ipv4 = Ipv4Util.longToIpv4(ipLong); Assert.assertEquals(ip, ipv4); } @Test public void getEndIpStrTest(){ - String ip = "192.168.1.1"; + final String ip = "192.168.1.1"; final int maskBitByMask = Ipv4Util.getMaskBitByMask("255.255.255.0"); final String endIpStr = Ipv4Util.getEndIpStr(ip, maskBitByMask); Assert.assertEquals("192.168.1.255", endIpStr); @@ -44,7 +44,7 @@ public class Ipv4UtilTest { @Test public void listTest(){ - int maskBit = Ipv4Util.getMaskBitByMask("255.255.255.0"); + final int maskBit = Ipv4Util.getMaskBitByMask("255.255.255.0"); final List list = Ipv4Util.list("192.168.100.2", maskBit, false); Assert.assertEquals(254, list.size()); @@ -83,7 +83,7 @@ public class Ipv4UtilTest { @Test public void isMaskValidTest() { - boolean maskValid = Ipv4Util.isMaskValid("255.255.255.0"); + final boolean maskValid = Ipv4Util.isMaskValid("255.255.255.0"); Assert.assertTrue("掩码合法检验", maskValid); } @@ -97,22 +97,22 @@ public class Ipv4UtilTest { @Test public void isMaskBitValidTest() { - boolean maskBitValid = Ipv4Util.isMaskBitValid(32); + final boolean maskBitValid = Ipv4Util.isMaskBitValid(32); Assert.assertTrue("掩码位合法检验", maskBitValid); } @Test public void isMaskBitInvalidTest() { - boolean maskBitValid = Ipv4Util.isMaskBitValid(33); + final boolean maskBitValid = Ipv4Util.isMaskBitValid(33); Assert.assertFalse("掩码位非法检验", maskBitValid); } @Test public void matchesTest() { - boolean matches1 = Ipv4Util.matches("127.*.*.1", "127.0.0.1"); + final boolean matches1 = Ipv4Util.matches("127.*.*.1", "127.0.0.1"); Assert.assertTrue("IP地址通配符匹配1", matches1); - boolean matches2 = Ipv4Util.matches("192.168.*.1", "127.0.0.1"); + final boolean matches2 = Ipv4Util.matches("192.168.*.1", "127.0.0.1"); Assert.assertFalse("IP地址通配符匹配2", matches2); } @@ -130,14 +130,14 @@ public class Ipv4UtilTest { @Test public void ipv4ToLongWithDefaultTest() { - String strIP = "不正确的 IP 地址"; - long defaultValue = 0L; - long ipOfLong = Ipv4Util.ipv4ToLong(strIP, defaultValue); + final String strIP = "不正确的 IP 地址"; + final long defaultValue = 0L; + final long ipOfLong = Ipv4Util.ipv4ToLong(strIP, defaultValue); Assert.assertEquals(ipOfLong, defaultValue); - String strIP2 = "255.255.255.255"; - long defaultValue2 = 0L; - long ipOfLong2 = Ipv4Util.ipv4ToLong(strIP2, defaultValue2); + final String strIP2 = "255.255.255.255"; + final long defaultValue2 = 0L; + final long ipOfLong2 = Ipv4Util.ipv4ToLong(strIP2, defaultValue2); Assert.assertEquals(ipOfLong2, 4294967295L); } }