diff --git a/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/utils/NetUtils.java b/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/utils/NetUtils.java index 926c3ab907..f7027cf78b 100644 --- a/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/utils/NetUtils.java +++ b/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/utils/NetUtils.java @@ -32,8 +32,8 @@ import java.util.LinkedList; import java.util.List; import java.util.Objects; import java.util.Optional; -import java.util.regex.Pattern; +import org.apache.http.conn.util.InetAddressUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -42,7 +42,6 @@ import org.slf4j.LoggerFactory; */ public class NetUtils { - private static final Pattern IP_PATTERN = Pattern.compile("\\d{1,3}(\\.\\d{1,3}){3,5}$"); private static final String NETWORK_PRIORITY_DEFAULT = "default"; private static final String NETWORK_PRIORITY_INNER = "inner"; private static final String NETWORK_PRIORITY_OUTER = "outer"; @@ -183,7 +182,7 @@ public class NetUtils { } String name = address.getHostAddress(); return (name != null - && IP_PATTERN.matcher(name).matches() + && InetAddressUtils.isIPv4Address(name) && !address.isAnyLocalAddress() && !address.isLoopbackAddress()); } @@ -237,7 +236,8 @@ public class NetUtils { Enumeration interfaces = NetworkInterface.getNetworkInterfaces(); while (interfaces.hasMoreElements()) { NetworkInterface networkInterface = interfaces.nextElement(); - if (ignoreNetworkInterface(networkInterface)) { // ignore + // ignore + if (ignoreNetworkInterface(networkInterface)) { continue; } validNetworkInterfaces.add(networkInterface); diff --git a/dolphinscheduler-common/src/test/java/org/apache/dolphinscheduler/common/utils/NetUtilsTest.java b/dolphinscheduler-common/src/test/java/org/apache/dolphinscheduler/common/utils/NetUtilsTest.java index d897696fca..1da8ffdb1b 100644 --- a/dolphinscheduler-common/src/test/java/org/apache/dolphinscheduler/common/utils/NetUtilsTest.java +++ b/dolphinscheduler-common/src/test/java/org/apache/dolphinscheduler/common/utils/NetUtilsTest.java @@ -99,6 +99,18 @@ public class NetUtilsTest { address = mock(InetAddress.class); when(address.getHostAddress()).thenReturn("1.2.3.4"); assertTrue(NetUtils.isValidV4Address(address)); + address = mock(InetAddress.class); + when(address.getHostAddress()).thenReturn("1.2.3.4:80"); + assertFalse(NetUtils.isValidV4Address(address)); + address = mock(InetAddress.class); + when(address.getHostAddress()).thenReturn("256.0.0.1"); + assertFalse(NetUtils.isValidV4Address(address)); + address = mock(InetAddress.class); + when(address.getHostAddress()).thenReturn("127.0.0.0.1"); + assertFalse(NetUtils.isValidV4Address(address)); + address = mock(InetAddress.class); + when(address.getHostAddress()).thenReturn("-1.2.3.4"); + assertFalse(NetUtils.isValidV4Address(address)); } }