public class org.apache.dubbo.common.utils.NetUtils extends java.lang.Object
{
private static org.apache.dubbo.common.logger.Logger logger;
private static final int RND_PORT_START;
private static final int RND_PORT_RANGE;
private static final int MIN_PORT;
private static final int MAX_PORT;
private static final java.util.regex.Pattern ADDRESS_PATTERN;
private static final java.util.regex.Pattern LOCAL_IP_PATTERN;
private static final java.util.regex.Pattern IP_PATTERN;
private static final java.util.Map HOST_NAME_CACHE;
private static volatile java.net.InetAddress LOCAL_ADDRESS;
private static final java.lang.String SPLIT_IPV4_CHARACTER;
private static final java.lang.String SPLIT_IPV6_CHARACTER;
private static volatile java.lang.String HOST_ADDRESS;
public void <init>()
{
org.apache.dubbo.common.utils.NetUtils v;
v := @this: org.apache.dubbo.common.utils.NetUtils;
specialinvoke v.<java.lang.Object: void <init>()>();
return;
}
public static int getRandomPort()
{
int v, v;
java.util.concurrent.ThreadLocalRandom v;
v = staticinvoke <java.util.concurrent.ThreadLocalRandom: java.util.concurrent.ThreadLocalRandom current()>();
v = virtualinvoke v.<java.util.concurrent.ThreadLocalRandom: int nextInt(int)>(10000);
v = 30000 + v;
return v;
}
public static int getAvailablePort()
{
java.lang.Throwable v;
java.net.ServerSocket v;
int v, v;
java.io.IOException v;
label:
v = new java.net.ServerSocket;
specialinvoke v.<java.net.ServerSocket: void <init>()>();
label:
virtualinvoke v.<java.net.ServerSocket: void bind(java.net.SocketAddress)>(null);
v = virtualinvoke v.<java.net.ServerSocket: int getLocalPort()>();
label:
virtualinvoke v.<java.net.ServerSocket: void close()>();
label:
return v;
label:
v := @caughtexception;
throw v;
label:
v := @caughtexception;
v = staticinvoke <org.apache.dubbo.common.utils.NetUtils: int getRandomPort()>();
return v;
catch java.lang.Throwable from label to label with label;
catch java.io.IOException from label to label with label;
}
public static int getAvailablePort(int)
{
java.lang.Throwable v;
java.io.IOException v;
java.net.ServerSocket v;
int v, v, v, v, v;
v := @parameter: int;
if v > 0 goto label;
v = staticinvoke <org.apache.dubbo.common.utils.NetUtils: int getAvailablePort()>();
return v;
label:
v = v;
label:
v = (int) 65535;
if v >= v goto label;
label:
v = new java.net.ServerSocket;
specialinvoke v.<java.net.ServerSocket: void <init>(int)>(v);
label:
v = v;
label:
virtualinvoke v.<java.net.ServerSocket: void close()>();
label:
return v;
label:
v := @caughtexception;
throw v;
label:
v := @caughtexception;
v = v + 1;
goto label;
label:
return v;
catch java.lang.Throwable from label to label with label;
catch java.io.IOException from label to label with label;
}
public static boolean isInvalidPort(int)
{
int v, v;
boolean v;
v := @parameter: int;
if v <= 0 goto label;
v = (int) 65535;
if v <= v goto label;
label:
v = 1;
goto label;
label:
v = 0;
label:
return v;
}
public static boolean isValidAddress(java.lang.String)
{
java.util.regex.Matcher v;
java.lang.String v;
java.util.regex.Pattern v;
boolean v;
v := @parameter: java.lang.String;
v = <org.apache.dubbo.common.utils.NetUtils: java.util.regex.Pattern ADDRESS_PATTERN>;
v = virtualinvoke v.<java.util.regex.Pattern: java.util.regex.Matcher matcher(java.lang.CharSequence)>(v);
v = virtualinvoke v.<java.util.regex.Matcher: boolean matches()>();
return v;
}
public static boolean isLocalHost(java.lang.String)
{
java.util.regex.Matcher v;
java.lang.String v;
java.util.regex.Pattern v;
boolean v, v, v;
v := @parameter: java.lang.String;
if v == null goto label;
v = <org.apache.dubbo.common.utils.NetUtils: java.util.regex.Pattern LOCAL_IP_PATTERN>;
v = virtualinvoke v.<java.util.regex.Pattern: java.util.regex.Matcher matcher(java.lang.CharSequence)>(v);
v = virtualinvoke v.<java.util.regex.Matcher: boolean matches()>();
if v != 0 goto label;
v = virtualinvoke v.<java.lang.String: boolean equalsIgnoreCase(java.lang.String)>("localhost");
if v == 0 goto label;
label:
v = 1;
goto label;
label:
v = 0;
label:
return v;
}
public static boolean isAnyHost(java.lang.String)
{
java.lang.String v, v;
boolean v;
v := @parameter: java.lang.String;
v = "0.0.0.0";
v = virtualinvoke v.<java.lang.String: boolean equals(java.lang.Object)>(v);
return v;
}
public static boolean isInvalidLocalHost(java.lang.String)
{
int v;
java.lang.String v;
boolean v, v, v, v;
v := @parameter: java.lang.String;
if v == null goto label;
v = virtualinvoke v.<java.lang.String: int length()>();
if v == 0 goto label;
v = virtualinvoke v.<java.lang.String: boolean equalsIgnoreCase(java.lang.String)>("localhost");
if v != 0 goto label;
v = virtualinvoke v.<java.lang.String: boolean equals(java.lang.Object)>("0.0.0.0");
if v != 0 goto label;
v = virtualinvoke v.<java.lang.String: boolean startsWith(java.lang.String)>("127.");
if v == 0 goto label;
label:
v = 1;
goto label;
label:
v = 0;
label:
return v;
}
public static boolean isValidLocalHost(java.lang.String)
{
java.lang.String v;
boolean v, v;
v := @parameter: java.lang.String;
v = staticinvoke <org.apache.dubbo.common.utils.NetUtils: boolean isInvalidLocalHost(java.lang.String)>(v);
if v != 0 goto label;
v = 1;
goto label;
label:
v = 0;
label:
return v;
}
public static java.net.InetSocketAddress getLocalSocketAddress(java.lang.String, int)
{
int v;
java.lang.String v;
java.net.InetSocketAddress v;
boolean v;
v := @parameter: java.lang.String;
v := @parameter: int;
v = staticinvoke <org.apache.dubbo.common.utils.NetUtils: boolean isInvalidLocalHost(java.lang.String)>(v);
if v == 0 goto label;
v = new java.net.InetSocketAddress;
specialinvoke v.<java.net.InetSocketAddress: void <init>(int)>(v);
goto label;
label:
v = new java.net.InetSocketAddress;
specialinvoke v.<java.net.InetSocketAddress: void <init>(java.lang.String,int)>(v, v);
label:
return v;
}
static boolean isValidV4Address(java.net.InetAddress)
{
java.net.InetAddress v;
java.util.regex.Matcher v;
java.lang.String v, v, v;
java.util.regex.Pattern v;
boolean v, v, v, v, v;
v := @parameter: java.net.InetAddress;
if v == null goto label;
v = virtualinvoke v.<java.net.InetAddress: boolean isLoopbackAddress()>();
if v == 0 goto label;
label:
return 0;
label:
v = virtualinvoke v.<java.net.InetAddress: java.lang.String getHostAddress()>();
if v == null goto label;
v = <org.apache.dubbo.common.utils.NetUtils: java.util.regex.Pattern IP_PATTERN>;
v = virtualinvoke v.<java.util.regex.Pattern: java.util.regex.Matcher matcher(java.lang.CharSequence)>(v);
v = virtualinvoke v.<java.util.regex.Matcher: boolean matches()>();
if v == 0 goto label;
v = "0.0.0.0";
v = virtualinvoke v.<java.lang.String: boolean equals(java.lang.Object)>(v);
if v != 0 goto label;
v = "127.0.0.1";
v = virtualinvoke v.<java.lang.String: boolean equals(java.lang.Object)>(v);
if v != 0 goto label;
v = 1;
goto label;
label:
v = 0;
label:
return v;
}
static boolean isPreferIPV6Address()
{
boolean v;
v = staticinvoke <java.lang.Boolean: boolean getBoolean(java.lang.String)>("java.net.preferIPv6Addresses");
return v;
}
static java.net.InetAddress normalizeV6Address(java.net.Inet6Address)
{
org.apache.dubbo.common.logger.Logger v;
java.net.UnknownHostException v;
java.net.InetAddress v;
java.net.Inet6Address v;
int v, v;
java.lang.String v, v, v;
v := @parameter: java.net.Inet6Address;
v = virtualinvoke v.<java.net.Inet6Address: java.lang.String getHostAddress()>();
v = virtualinvoke v.<java.lang.String: int lastIndexOf(int)>(37);
if v <= 0 goto label;
label:
v = virtualinvoke v.<java.lang.String: java.lang.String substring(int,int)>(0, v);
v = virtualinvoke v.<java.net.Inet6Address: int getScopeId()>();
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.String,int)>(v, v) <java.lang.invoke.StringConcatFactory: java.lang.invoke.CallSite makeConcatWithConstants(java.lang.invoke.MethodHandles$Lookup,java.lang.String,java.lang.invoke.MethodType,java.lang.String,java.lang.Object[])>("\u0001%\u0001");
v = staticinvoke <java.net.InetAddress: java.net.InetAddress getByName(java.lang.String)>(v);
label:
return v;
label:
v := @caughtexception;
v = <org.apache.dubbo.common.utils.NetUtils: org.apache.dubbo.common.logger.Logger logger>;
interfaceinvoke v.<org.apache.dubbo.common.logger.Logger: void debug(java.lang.String,java.lang.Throwable)>("Unknown IPV6 address: ", v);
label:
return v;
catch java.net.UnknownHostException from label to label with label;
}
public static java.lang.String getLocalHost()
{
java.net.InetAddress v;
java.lang.String v, v, v;
v = <org.apache.dubbo.common.utils.NetUtils: java.lang.String HOST_ADDRESS>;
if v == null goto label;
v = <org.apache.dubbo.common.utils.NetUtils: java.lang.String HOST_ADDRESS>;
return v;
label:
v = staticinvoke <org.apache.dubbo.common.utils.NetUtils: java.net.InetAddress getLocalAddress()>();
if v == null goto label;
v = virtualinvoke v.<java.net.InetAddress: java.lang.String getHostAddress()>();
<org.apache.dubbo.common.utils.NetUtils: java.lang.String HOST_ADDRESS> = v;
return v;
label:
return "127.0.0.1";
}
public static java.lang.String filterLocalHost(java.lang.String)
{
org.apache.dubbo.common.URL v, v;
int v, v;
java.lang.String v, v, v, v, v, v, v, v, v;
boolean v, v, v, v, v;
v := @parameter: java.lang.String;
if v == null goto label;
v = virtualinvoke v.<java.lang.String: int length()>();
if v != 0 goto label;
label:
return v;
label:
v = virtualinvoke v.<java.lang.String: boolean contains(java.lang.CharSequence)>("://");
if v == 0 goto label;
v = staticinvoke <org.apache.dubbo.common.URL: org.apache.dubbo.common.URL valueOf(java.lang.String)>(v);
v = virtualinvoke v.<org.apache.dubbo.common.URL: java.lang.String getHost()>();
v = staticinvoke <org.apache.dubbo.common.utils.NetUtils: boolean isInvalidLocalHost(java.lang.String)>(v);
if v == 0 goto label;
v = staticinvoke <org.apache.dubbo.common.utils.NetUtils: java.lang.String getLocalHost()>();
v = virtualinvoke v.<org.apache.dubbo.common.URL: org.apache.dubbo.common.URL setHost(java.lang.String)>(v);
v = virtualinvoke v.<org.apache.dubbo.common.URL: java.lang.String toFullString()>();
return v;
label:
v = virtualinvoke v.<java.lang.String: boolean contains(java.lang.CharSequence)>(":");
if v == 0 goto label;
v = virtualinvoke v.<java.lang.String: int lastIndexOf(int)>(58);
v = virtualinvoke v.<java.lang.String: java.lang.String substring(int,int)>(0, v);
v = staticinvoke <org.apache.dubbo.common.utils.NetUtils: boolean isInvalidLocalHost(java.lang.String)>(v);
if v == 0 goto label;
v = staticinvoke <org.apache.dubbo.common.utils.NetUtils: java.lang.String getLocalHost()>();
v = virtualinvoke v.<java.lang.String: java.lang.String substring(int)>(v);
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.String,java.lang.String)>(v, v) <java.lang.invoke.StringConcatFactory: java.lang.invoke.CallSite makeConcatWithConstants(java.lang.invoke.MethodHandles$Lookup,java.lang.String,java.lang.invoke.MethodType,java.lang.String,java.lang.Object[])>("\u0001\u0001");
return v;
label:
v = staticinvoke <org.apache.dubbo.common.utils.NetUtils: boolean isInvalidLocalHost(java.lang.String)>(v);
if v == 0 goto label;
v = staticinvoke <org.apache.dubbo.common.utils.NetUtils: java.lang.String getLocalHost()>();
return v;
label:
return v;
}
public static java.lang.String getIpByConfig()
{
java.net.InetAddress v;
java.lang.String v, v, v;
v = staticinvoke <org.apache.dubbo.common.config.ConfigurationUtils: java.lang.String getProperty(java.lang.String)>("DUBBO_IP_TO_BIND");
if v == null goto label;
return v;
label:
v = staticinvoke <org.apache.dubbo.common.utils.NetUtils: java.net.InetAddress getLocalAddress()>();
v = virtualinvoke v.<java.net.InetAddress: java.lang.String getHostName()>();
v = staticinvoke <org.apache.dubbo.common.utils.NetUtils: java.lang.String getIpByHost(java.lang.String)>(v);
return v;
}
public static java.net.InetAddress getLocalAddress()
{
java.net.InetAddress v, v, v;
v = <org.apache.dubbo.common.utils.NetUtils: java.net.InetAddress LOCAL_ADDRESS>;
if v == null goto label;
v = <org.apache.dubbo.common.utils.NetUtils: java.net.InetAddress LOCAL_ADDRESS>;
return v;
label:
v = staticinvoke <org.apache.dubbo.common.utils.NetUtils: java.net.InetAddress getLocalAddress0()>();
<org.apache.dubbo.common.utils.NetUtils: java.net.InetAddress LOCAL_ADDRESS> = v;
return v;
}
private static java.util.Optional toValidAddress(java.net.InetAddress)
{
java.net.InetAddress v, v;
java.util.Optional v, v, v;
boolean v, v, v;
v := @parameter: java.net.InetAddress;
v = v instanceof java.net.Inet6Address;
if v == 0 goto label;
v = staticinvoke <org.apache.dubbo.common.utils.NetUtils: boolean isPreferIPV6Address()>();
if v == 0 goto label;
v = staticinvoke <org.apache.dubbo.common.utils.NetUtils: java.net.InetAddress normalizeV6Address(java.net.Inet6Address)>(v);
v = staticinvoke <java.util.Optional: java.util.Optional ofNullable(java.lang.Object)>(v);
return v;
label:
v = staticinvoke <org.apache.dubbo.common.utils.NetUtils: boolean isValidV4Address(java.net.InetAddress)>(v);
if v == 0 goto label;
v = staticinvoke <java.util.Optional: java.util.Optional of(java.lang.Object)>(v);
return v;
label:
v = staticinvoke <java.util.Optional: java.util.Optional empty()>();
return v;
}
private static java.net.InetAddress getLocalAddress0()
{
java.lang.Throwable v, v;
java.util.Enumeration v;
java.net.InetAddress v;
boolean v, v, v, v;
org.apache.dubbo.common.logger.Logger v, v;
java.net.NetworkInterface v;
java.io.IOException v;
java.util.Optional v, v;
java.lang.Object v, v, v, v;
v = null;
label:
v = staticinvoke <org.apache.dubbo.common.utils.NetUtils: java.net.NetworkInterface findNetworkInterface()>();
v = virtualinvoke v.<java.net.NetworkInterface: java.util.Enumeration getInetAddresses()>();
label:
v = interfaceinvoke v.<java.util.Enumeration: boolean hasMoreElements()>();
if v == 0 goto label;
v = interfaceinvoke v.<java.util.Enumeration: java.lang.Object nextElement()>();
v = staticinvoke <org.apache.dubbo.common.utils.NetUtils: java.util.Optional toValidAddress(java.net.InetAddress)>(v);
v = virtualinvoke v.<java.util.Optional: boolean isPresent()>();
if v == 0 goto label;
label:
v = virtualinvoke v.<java.util.Optional: java.lang.Object get()>();
v = virtualinvoke v.<java.net.InetAddress: boolean isReachable(int)>(100);
if v == 0 goto label;
v = virtualinvoke v.<java.util.Optional: java.lang.Object get()>();
label:
return v;
label:
v := @caughtexception;
goto label;
label:
v := @caughtexception;
v = <org.apache.dubbo.common.utils.NetUtils: org.apache.dubbo.common.logger.Logger logger>;
interfaceinvoke v.<org.apache.dubbo.common.logger.Logger: void warn(java.lang.Throwable)>(v);
label:
v = staticinvoke <java.net.InetAddress: java.net.InetAddress getLocalHost()>();
v = staticinvoke <org.apache.dubbo.common.utils.NetUtils: java.util.Optional toValidAddress(java.net.InetAddress)>(v);
v = virtualinvoke v.<java.util.Optional: boolean isPresent()>();
if v == 0 goto label;
v = virtualinvoke v.<java.util.Optional: java.lang.Object get()>();
label:
return v;
label:
v := @caughtexception;
v = <org.apache.dubbo.common.utils.NetUtils: org.apache.dubbo.common.logger.Logger logger>;
interfaceinvoke v.<org.apache.dubbo.common.logger.Logger: void warn(java.lang.Throwable)>(v);
label:
return v;
catch java.io.IOException from label to label with label;
catch java.lang.Throwable from label to label with label;
catch java.lang.Throwable from label to label with label;
catch java.lang.Throwable from label to label with label;
}
private static boolean ignoreNetworkInterface(java.net.NetworkInterface) throws java.net.SocketException
{
java.net.NetworkInterface v;
boolean v, v, v, v;
v := @parameter: java.net.NetworkInterface;
if v == null goto label;
v = virtualinvoke v.<java.net.NetworkInterface: boolean isLoopback()>();
if v != 0 goto label;
v = virtualinvoke v.<java.net.NetworkInterface: boolean isVirtual()>();
if v != 0 goto label;
v = virtualinvoke v.<java.net.NetworkInterface: boolean isUp()>();
if v != 0 goto label;
label:
v = 1;
goto label;
label:
v = 0;
label:
return v;
}
private static java.util.List getValidNetworkInterfaces() throws java.net.SocketException
{
java.util.Enumeration v;
java.lang.Object v;
java.util.LinkedList v;
boolean v, v;
v = new java.util.LinkedList;
specialinvoke v.<java.util.LinkedList: void <init>()>();
v = staticinvoke <java.net.NetworkInterface: java.util.Enumeration getNetworkInterfaces()>();
label:
v = interfaceinvoke v.<java.util.Enumeration: boolean hasMoreElements()>();
if v == 0 goto label;
v = interfaceinvoke v.<java.util.Enumeration: java.lang.Object nextElement()>();
v = staticinvoke <org.apache.dubbo.common.utils.NetUtils: boolean ignoreNetworkInterface(java.net.NetworkInterface)>(v);
if v != 0 goto label;
interfaceinvoke v.<java.util.List: boolean add(java.lang.Object)>(v);
goto label;
label:
return v;
}
public static boolean isPreferredNetworkInterface(java.net.NetworkInterface)
{
java.net.NetworkInterface v;
java.lang.String v, v;
boolean v;
v := @parameter: java.net.NetworkInterface;
v = staticinvoke <java.lang.System: java.lang.String getProperty(java.lang.String)>("dubbo.network.interface.preferred");
v = virtualinvoke v.<java.net.NetworkInterface: java.lang.String getDisplayName()>();
v = staticinvoke <java.util.Objects: boolean equals(java.lang.Object,java.lang.Object)>(v, v);
return v;
}
public static java.net.NetworkInterface findNetworkInterface()
{
java.lang.Throwable v;
java.util.Enumeration v;
boolean v, v, v, v, v, v;
java.util.Iterator v, v;
org.apache.dubbo.common.logger.Logger v;
java.net.NetworkInterface v;
java.io.IOException v;
java.util.List v;
java.util.Optional v;
java.lang.Object v, v, v, v, v;
v = staticinvoke <java.util.Collections: java.util.List emptyList()>();
label:
v = staticinvoke <org.apache.dubbo.common.utils.NetUtils: java.util.List getValidNetworkInterfaces()>();
label:
goto label;
label:
v := @caughtexception;
v = <org.apache.dubbo.common.utils.NetUtils: org.apache.dubbo.common.logger.Logger logger>;
interfaceinvoke v.<org.apache.dubbo.common.logger.Logger: void warn(java.lang.Throwable)>(v);
label:
v = null;
v = interfaceinvoke v.<java.util.List: java.util.Iterator iterator()>();
label:
v = interfaceinvoke v.<java.util.Iterator: boolean hasNext()>();
if v == 0 goto label;
v = interfaceinvoke v.<java.util.Iterator: java.lang.Object next()>();
v = staticinvoke <org.apache.dubbo.common.utils.NetUtils: boolean isPreferredNetworkInterface(java.net.NetworkInterface)>(v);
if v == 0 goto label;
v = v;
label:
if v != null goto label;
v = interfaceinvoke v.<java.util.List: java.util.Iterator iterator()>();
label:
v = interfaceinvoke v.<java.util.Iterator: boolean hasNext()>();
if v == 0 goto label;
v = interfaceinvoke v.<java.util.Iterator: java.lang.Object next()>();
v = virtualinvoke v.<java.net.NetworkInterface: java.util.Enumeration getInetAddresses()>();
label:
v = interfaceinvoke v.<java.util.Enumeration: boolean hasMoreElements()>();
if v == 0 goto label;
v = interfaceinvoke v.<java.util.Enumeration: java.lang.Object nextElement()>();
v = staticinvoke <org.apache.dubbo.common.utils.NetUtils: java.util.Optional toValidAddress(java.net.InetAddress)>(v);
v = virtualinvoke v.<java.util.Optional: boolean isPresent()>();
if v == 0 goto label;
label:
v = virtualinvoke v.<java.util.Optional: java.lang.Object get()>();
v = virtualinvoke v.<java.net.InetAddress: boolean isReachable(int)>(100);
if v == 0 goto label;
v = v;
label:
goto label;
label:
v := @caughtexception;
goto label;
label:
if v != null goto label;
v = staticinvoke <org.apache.dubbo.common.utils.CollectionUtils: java.lang.Object first(java.util.Collection)>(v);
label:
return v;
catch java.lang.Throwable from label to label with label;
catch java.io.IOException from label to label with label;
}
public static java.lang.String getHostName(java.lang.String)
{
java.lang.Throwable v;
java.net.InetAddress v;
java.util.Map v, v;
int v, v, v;
java.lang.Object v;
java.lang.String v, v;
v := @parameter: java.lang.String;
label:
v = virtualinvoke v.<java.lang.String: int indexOf(int)>(58);
v = (int) -1;
if v <= v goto label;
v = virtualinvoke v.<java.lang.String: java.lang.String substring(int,int)>(0, v);
label:
v = <org.apache.dubbo.common.utils.NetUtils: java.util.Map HOST_NAME_CACHE>;
v = interfaceinvoke v.<java.util.Map: java.lang.Object get(java.lang.Object)>(v);
if v == null goto label;
v = virtualinvoke v.<java.lang.String: int length()>();
if v <= 0 goto label;
label:
return v;
label:
v = staticinvoke <java.net.InetAddress: java.net.InetAddress getByName(java.lang.String)>(v);
if v == null goto label;
v = virtualinvoke v.<java.net.InetAddress: java.lang.String getHostName()>();
v = <org.apache.dubbo.common.utils.NetUtils: java.util.Map HOST_NAME_CACHE>;
interfaceinvoke v.<java.util.Map: java.lang.Object put(java.lang.Object,java.lang.Object)>(v, v);
label:
return v;
label:
v := @caughtexception;
label:
return v;
catch java.lang.Throwable from label to label with label;
catch java.lang.Throwable from label to label with label;
}
public static java.lang.String getIpByHost(java.lang.String)
{
java.net.InetAddress v;
java.lang.String v, v;
java.net.UnknownHostException v;
v := @parameter: java.lang.String;
label:
v = staticinvoke <java.net.InetAddress: java.net.InetAddress getByName(java.lang.String)>(v);
v = virtualinvoke v.<java.net.InetAddress: java.lang.String getHostAddress()>();
label:
return v;
label:
v := @caughtexception;
return v;
catch java.net.UnknownHostException from label to label with label;
}
public static java.lang.String toAddressString(java.net.InetSocketAddress)
{
java.net.InetAddress v;
int v;
java.lang.String v, v;
java.net.InetSocketAddress v;
v := @parameter: java.net.InetSocketAddress;
v = virtualinvoke v.<java.net.InetSocketAddress: java.net.InetAddress getAddress()>();
v = virtualinvoke v.<java.net.InetAddress: java.lang.String getHostAddress()>();
v = virtualinvoke v.<java.net.InetSocketAddress: int getPort()>();
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.String,int)>(v, v) <java.lang.invoke.StringConcatFactory: java.lang.invoke.CallSite makeConcatWithConstants(java.lang.invoke.MethodHandles$Lookup,java.lang.String,java.lang.invoke.MethodType,java.lang.String,java.lang.Object[])>("\u0001:\u0001");
return v;
}
public static java.net.InetSocketAddress toAddress(java.lang.String)
{
java.net.InetSocketAddress v;
int v, v, v, v;
java.lang.String v, v, v;
v := @parameter: java.lang.String;
v = virtualinvoke v.<java.lang.String: int indexOf(int)>(58);
v = (int) -1;
if v <= v goto label;
v = virtualinvoke v.<java.lang.String: java.lang.String substring(int,int)>(0, v);
v = v + 1;
v = virtualinvoke v.<java.lang.String: java.lang.String substring(int)>(v);
v = staticinvoke <java.lang.Integer: int parseInt(java.lang.String)>(v);
goto label;
label:
v = v;
v = 0;
label:
v = new java.net.InetSocketAddress;
specialinvoke v.<java.net.InetSocketAddress: void <init>(java.lang.String,int)>(v, v);
return v;
}
public static java.lang.String toURL(java.lang.String, java.lang.String, int, java.lang.String)
{
char v;
int v;
java.lang.StringBuilder v, v, v, v;
java.lang.String v, v, v, v;
v := @parameter: java.lang.String;
v := @parameter: java.lang.String;
v := @parameter: int;
v := @parameter: java.lang.String;
v = new java.lang.StringBuilder;
specialinvoke v.<java.lang.StringBuilder: void <init>()>();
v = virtualinvoke v.<java.lang.StringBuilder: java.lang.StringBuilder append(java.lang.String)>(v);
virtualinvoke v.<java.lang.StringBuilder: java.lang.StringBuilder append(java.lang.String)>("://");
v = virtualinvoke v.<java.lang.StringBuilder: java.lang.StringBuilder append(java.lang.String)>(v);
v = virtualinvoke v.<java.lang.StringBuilder: java.lang.StringBuilder append(char)>(58);
virtualinvoke v.<java.lang.StringBuilder: java.lang.StringBuilder append(int)>(v);
v = virtualinvoke v.<java.lang.String: char charAt(int)>(0);
if v == 47 goto label;
virtualinvoke v.<java.lang.StringBuilder: java.lang.StringBuilder append(char)>(47);
label:
virtualinvoke v.<java.lang.StringBuilder: java.lang.StringBuilder append(java.lang.String)>(v);
v = virtualinvoke v.<java.lang.StringBuilder: java.lang.String toString()>();
return v;
}
public static void joinMulticastGroup(java.net.MulticastSocket, java.net.InetAddress) throws java.io.IOException
{
java.net.InetAddress v;
java.net.MulticastSocket v;
boolean v;
v := @parameter: java.net.MulticastSocket;
v := @parameter: java.net.InetAddress;
v = v instanceof java.net.Inet6Address;
staticinvoke <org.apache.dubbo.common.utils.NetUtils: void setInterface(java.net.MulticastSocket,boolean)>(v, v);
virtualinvoke v.<java.net.MulticastSocket: void setLoopbackMode(boolean)>(0);
virtualinvoke v.<java.net.MulticastSocket: void joinGroup(java.net.InetAddress)>(v);
return;
}
public static void setInterface(java.net.MulticastSocket, boolean) throws java.io.IOException
{
java.util.Enumeration v;
boolean v, v, v, v, v, v, v, v;
java.util.Iterator v;
java.io.IOException v, v;
java.util.List v;
java.net.MulticastSocket v;
java.lang.Object v, v;
v := @parameter: java.net.MulticastSocket;
v := @parameter: boolean;
v = 0;
v = staticinvoke <org.apache.dubbo.common.utils.NetUtils: java.util.List getValidNetworkInterfaces()>();
v = interfaceinvoke v.<java.util.List: java.util.Iterator iterator()>();
label:
v = interfaceinvoke v.<java.util.Iterator: boolean hasNext()>();
if v == 0 goto label;
v = interfaceinvoke v.<java.util.Iterator: java.lang.Object next()>();
v = virtualinvoke v.<java.net.NetworkInterface: java.util.Enumeration getInetAddresses()>();
label:
v = interfaceinvoke v.<java.util.Enumeration: boolean hasMoreElements()>();
if v == 0 goto label;
v = interfaceinvoke v.<java.util.Enumeration: java.lang.Object nextElement()>();
if v == 0 goto label;
v = v instanceof java.net.Inet6Address;
if v == 0 goto label;
label:
v = virtualinvoke v.<java.net.InetAddress: boolean isReachable(int)>(100);
if v == 0 goto label;
virtualinvoke v.<java.net.MulticastSocket: void setInterface(java.net.InetAddress)>(v);
v = 1;
label:
goto label;
label:
v := @caughtexception;
goto label;
label:
if v != 0 goto label;
v = v instanceof java.net.Inet4Address;
if v == 0 goto label;
label:
v = virtualinvoke v.<java.net.InetAddress: boolean isReachable(int)>(100);
if v == 0 goto label;
virtualinvoke v.<java.net.MulticastSocket: void setInterface(java.net.InetAddress)>(v);
v = 1;
label:
goto label;
label:
v := @caughtexception;
goto label;
label:
if v == 0 goto label;
label:
return;
catch java.io.IOException from label to label with label;
catch java.io.IOException from label to label with label;
}
public static boolean matchIpExpression(java.lang.String, java.lang.String, int) throws java.net.UnknownHostException
{
int v;
java.lang.String v, v;
org.apache.dubbo.common.utils.CIDRUtils v;
boolean v, v, v;
v := @parameter: java.lang.String;
v := @parameter: java.lang.String;
v := @parameter: int;
v = virtualinvoke v.<java.lang.String: boolean contains(java.lang.CharSequence)>("/");
if v == 0 goto label;
v = new org.apache.dubbo.common.utils.CIDRUtils;
specialinvoke v.<org.apache.dubbo.common.utils.CIDRUtils: void <init>(java.lang.String)>(v);
v = virtualinvoke v.<org.apache.dubbo.common.utils.CIDRUtils: boolean isInRange(java.lang.String)>(v);
return v;
label:
v = staticinvoke <org.apache.dubbo.common.utils.NetUtils: boolean matchIpRange(java.lang.String,java.lang.String,int)>(v, v, v);
return v;
}
public static boolean matchIpRange(java.lang.String, java.lang.String, int) throws java.net.UnknownHostException
{
java.lang.Integer v, v, v;
java.net.InetAddress v, v;
java.lang.String v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v;
boolean v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v;
java.lang.String[] v, v, v, v;
int v, v, v, v, v, v, v, v;
java.lang.IllegalArgumentException v, v;
v := @parameter: java.lang.String;
v := @parameter: java.lang.String;
v := @parameter: int;
if v == null goto label;
if v != null goto label;
label:
v = new java.lang.IllegalArgumentException;
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.String,java.lang.String)>(v, v) <java.lang.invoke.StringConcatFactory: java.lang.invoke.CallSite makeConcatWithConstants(java.lang.invoke.MethodHandles$Lookup,java.lang.String,java.lang.invoke.MethodType,java.lang.String,java.lang.Object[])>("Illegal Argument pattern or hostName. Pattern:\u, Host:\u0001");
specialinvoke v.<java.lang.IllegalArgumentException: void <init>(java.lang.String)>(v);
throw v;
label:
v = virtualinvoke v.<java.lang.String: java.lang.String trim()>();
v = "*.*.*.*";
v = virtualinvoke v.<java.lang.String: boolean equals(java.lang.Object)>(v);
if v != 0 goto label;
v = "*";
v = virtualinvoke v.<java.lang.String: boolean equals(java.lang.Object)>(v);
if v == 0 goto label;
label:
return 1;
label:
v = staticinvoke <java.net.InetAddress: java.net.InetAddress getByName(java.lang.String)>(v);
v = staticinvoke <org.apache.dubbo.common.utils.NetUtils: boolean isValidV4Address(java.net.InetAddress)>(v);
v = staticinvoke <org.apache.dubbo.common.utils.NetUtils: java.lang.String[] getPatternHostAndPort(java.lang.String,boolean)>(v, v);
v = v[1];
if v == null goto label;
v = v[1];
v = staticinvoke <java.lang.String: java.lang.String valueOf(int)>(v);
v = virtualinvoke v.<java.lang.String: boolean equals(java.lang.Object)>(v);
if v != 0 goto label;
return 0;
label:
v = v[0];
v = "\\.";
if v != 0 goto label;
v = ":";
label:
v = virtualinvoke v.<java.lang.String: java.lang.String[] split(java.lang.String)>(v);
staticinvoke <org.apache.dubbo.common.utils.NetUtils: void checkHostPattern(java.lang.String,java.lang.String[],boolean)>(v, v, v);
v = virtualinvoke v.<java.net.InetAddress: java.lang.String getHostAddress()>();
v = virtualinvoke v.<java.lang.String: boolean equals(java.lang.Object)>(v);
if v == 0 goto label;
return 1;
label:
v = staticinvoke <org.apache.dubbo.common.utils.NetUtils: boolean ipPatternContainExpression(java.lang.String)>(v);
if v != 0 goto label;
v = staticinvoke <java.net.InetAddress: java.net.InetAddress getByName(java.lang.String)>(v);
v = virtualinvoke v.<java.net.InetAddress: java.lang.String getHostAddress()>();
v = virtualinvoke v.<java.lang.String: boolean equals(java.lang.Object)>(v);
return v;
label:
v = virtualinvoke v.<java.lang.String: java.lang.String[] split(java.lang.String)>(v);
v = 0;
label:
v = lengthof v;
if v >= v goto label;
v = "*";
v = v[v];
v = virtualinvoke v.<java.lang.String: boolean equals(java.lang.Object)>(v);
if v != 0 goto label;
v = v[v];
v = v[v];
v = virtualinvoke v.<java.lang.String: boolean equals(java.lang.Object)>(v);
if v != 0 goto label;
v = v[v];
v = virtualinvoke v.<java.lang.String: boolean contains(java.lang.CharSequence)>("-");
if v == 0 goto label;
v = v[v];
v = staticinvoke <org.apache.dubbo.common.utils.StringUtils: java.lang.String[] split(java.lang.String,char)>(v, 45);
v = lengthof v;
if v == 2 goto label;
v = new java.lang.IllegalArgumentException;
v = v[v];
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.String)>(v) <java.lang.invoke.StringConcatFactory: java.lang.invoke.CallSite makeConcatWithConstants(java.lang.invoke.MethodHandles$Lookup,java.lang.String,java.lang.invoke.MethodType,java.lang.String,java.lang.Object[])>("There is wrong format of ip Address: \u0001");
specialinvoke v.<java.lang.IllegalArgumentException: void <init>(java.lang.String)>(v);
throw v;
label:
v = v[0];
v = staticinvoke <org.apache.dubbo.common.utils.NetUtils: java.lang.Integer getNumOfIpSegment(java.lang.String,boolean)>(v, v);
v = v[1];
v = staticinvoke <org.apache.dubbo.common.utils.NetUtils: java.lang.Integer getNumOfIpSegment(java.lang.String,boolean)>(v, v);
v = v[v];
v = staticinvoke <org.apache.dubbo.common.utils.NetUtils: java.lang.Integer getNumOfIpSegment(java.lang.String,boolean)>(v, v);
v = virtualinvoke v.<java.lang.Integer: int intValue()>();
v = virtualinvoke v.<java.lang.Integer: int intValue()>();
if v < v goto label;
v = virtualinvoke v.<java.lang.Integer: int intValue()>();
v = virtualinvoke v.<java.lang.Integer: int intValue()>();
if v <= v goto label;
label:
return 0;
label:
v = "0";
v = v[v];
v = virtualinvoke v.<java.lang.String: boolean equals(java.lang.Object)>(v);
if v == 0 goto label;
v = "0";
v = v[v];
v = virtualinvoke v.<java.lang.String: boolean equals(java.lang.Object)>(v);
if v != 0 goto label;
v = "00";
v = v[v];
v = virtualinvoke v.<java.lang.String: boolean equals(java.lang.Object)>(v);
if v != 0 goto label;
v = "000";
v = v[v];
v = virtualinvoke v.<java.lang.String: boolean equals(java.lang.Object)>(v);
if v != 0 goto label;
v = "0000";
v = v[v];
v = virtualinvoke v.<java.lang.String: boolean equals(java.lang.Object)>(v);
if v != 0 goto label;
label:
v = v[v];
v = v[v];
v = virtualinvoke v.<java.lang.String: boolean equals(java.lang.Object)>(v);
if v != 0 goto label;
return 0;
label:
v = v + 1;
goto label;
label:
return 1;
}
public static boolean isMulticastAddress(java.lang.String)
{
int v, v;
java.lang.String v, v;
boolean v, v;
v := @parameter: java.lang.String;
v = virtualinvoke v.<java.lang.String: int indexOf(int)>(46);
if v <= 0 goto label;
v = virtualinvoke v.<java.lang.String: java.lang.String substring(int,int)>(0, v);
v = staticinvoke <org.apache.dubbo.common.utils.StringUtils: boolean isInteger(java.lang.String)>(v);
if v == 0 goto label;
v = staticinvoke <java.lang.Integer: int parseInt(java.lang.String)>(v);
if v < 224 goto label;
if v > 239 goto label;
v = 1;
goto label;
label:
v = 0;
label:
return v;
label:
return 0;
}
private static boolean ipPatternContainExpression(java.lang.String)
{
java.lang.String v;
boolean v, v, v;
v := @parameter: java.lang.String;
v = virtualinvoke v.<java.lang.String: boolean contains(java.lang.CharSequence)>("*");
if v != 0 goto label;
v = virtualinvoke v.<java.lang.String: boolean contains(java.lang.CharSequence)>("-");
if v == 0 goto label;
label:
v = 1;
goto label;
label:
v = 0;
label:
return v;
}
private static void checkHostPattern(java.lang.String, java.lang.String[], boolean)
{
java.lang.String[] v;
java.lang.IllegalArgumentException v, v, v;
int v, v, v;
java.lang.String v, v, v;
boolean v, v, v;
v := @parameter: java.lang.String;
v := @parameter: java.lang.String[];
v := @parameter: boolean;
if v != 0 goto label;
v = lengthof v;
if v == 8 goto label;
v = staticinvoke <org.apache.dubbo.common.utils.NetUtils: boolean ipPatternContainExpression(java.lang.String)>(v);
if v == 0 goto label;
v = new java.lang.IllegalArgumentException;
specialinvoke v.<java.lang.IllegalArgumentException: void <init>(java.lang.String)>("If you config ip expression that contains \'*\' or \'-\', please fill qualified ip pattern like 234e:0:4567:0:0:0:3d:*. ");
throw v;
label:
v = lengthof v;
if v == 8 goto label;
v = virtualinvoke v.<java.lang.String: boolean contains(java.lang.CharSequence)>("::");
if v != 0 goto label;
v = new java.lang.IllegalArgumentException;
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.String)>(v) <java.lang.invoke.StringConcatFactory: java.lang.invoke.CallSite makeConcatWithConstants(java.lang.invoke.MethodHandles$Lookup,java.lang.String,java.lang.invoke.MethodType,java.lang.String,java.lang.Object[])>("The host is ipv, but the pattern is not ipv pattern : \u0001");
specialinvoke v.<java.lang.IllegalArgumentException: void <init>(java.lang.String)>(v);
throw v;
label:
v = lengthof v;
if v == 4 goto label;
v = new java.lang.IllegalArgumentException;
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.String)>(v) <java.lang.invoke.StringConcatFactory: java.lang.invoke.CallSite makeConcatWithConstants(java.lang.invoke.MethodHandles$Lookup,java.lang.String,java.lang.invoke.MethodType,java.lang.String,java.lang.Object[])>("The host is ipv, but the pattern is not ipv pattern : \u0001");
specialinvoke v.<java.lang.IllegalArgumentException: void <init>(java.lang.String)>(v);
throw v;
label:
return;
}
private static java.lang.String[] getPatternHostAndPort(java.lang.String, boolean)
{
java.lang.String[] v;
int v, v, v, v, v, v;
java.lang.String v, v, v, v, v, v;
boolean v, v, v, v, v, v;
v := @parameter: java.lang.String;
v := @parameter: boolean;
v = newarray (java.lang.String)[2];
v = virtualinvoke v.<java.lang.String: boolean startsWith(java.lang.String)>("[");
if v == 0 goto label;
v = virtualinvoke v.<java.lang.String: boolean contains(java.lang.CharSequence)>("]:");
if v == 0 goto label;
v = virtualinvoke v.<java.lang.String: int indexOf(java.lang.String)>("]:");
v = virtualinvoke v.<java.lang.String: java.lang.String substring(int,int)>(1, v);
v[0] = v;
v = v + 2;
v = virtualinvoke v.<java.lang.String: java.lang.String substring(int)>(v);
v[1] = v;
return v;
label:
v = virtualinvoke v.<java.lang.String: boolean startsWith(java.lang.String)>("[");
if v == 0 goto label;
v = virtualinvoke v.<java.lang.String: boolean endsWith(java.lang.String)>("]");
if v == 0 goto label;
v = virtualinvoke v.<java.lang.String: int length()>();
v = v - 1;
v = virtualinvoke v.<java.lang.String: java.lang.String substring(int,int)>(1, v);
v[0] = v;
v[1] = null;
return v;
label:
if v == 0 goto label;
v = virtualinvoke v.<java.lang.String: boolean contains(java.lang.CharSequence)>(":");
if v == 0 goto label;
v = virtualinvoke v.<java.lang.String: int indexOf(java.lang.String)>(":");
v = virtualinvoke v.<java.lang.String: java.lang.String substring(int,int)>(0, v);
v[0] = v;
v = v + 1;
v = virtualinvoke v.<java.lang.String: java.lang.String substring(int)>(v);
v[1] = v;
return v;
label:
v[0] = v;
return v;
}
private static java.lang.Integer getNumOfIpSegment(java.lang.String, boolean)
{
int v, v;
java.lang.String v;
java.lang.Integer v, v;
boolean v;
v := @parameter: java.lang.String;
v := @parameter: boolean;
if v == 0 goto label;
v = staticinvoke <java.lang.Integer: int parseInt(java.lang.String)>(v);
v = staticinvoke <java.lang.Integer: java.lang.Integer valueOf(int)>(v);
return v;
label:
v = staticinvoke <java.lang.Integer: int parseInt(java.lang.String,int)>(v, 16);
v = staticinvoke <java.lang.Integer: java.lang.Integer valueOf(int)>(v);
return v;
}
static void <clinit>()
{
org.apache.dubbo.common.logger.Logger v, v, v, v;
org.apache.dubbo.common.utils.LRUCache v;
java.util.regex.Pattern v, v, v;
boolean v;
v = staticinvoke <org.apache.dubbo.common.logger.LoggerFactory: org.apache.dubbo.common.logger.Logger getLogger(java.lang.Class)>(class "Lorg/apache/dubbo/common/utils/NetUtils;");
<org.apache.dubbo.common.utils.NetUtils: org.apache.dubbo.common.logger.Logger logger> = v;
v = <org.apache.dubbo.common.utils.NetUtils: org.apache.dubbo.common.logger.Logger logger>;
v = v instanceof org.apache.dubbo.common.logger.support.FailsafeLogger;
if v == 0 goto label;
v = <org.apache.dubbo.common.utils.NetUtils: org.apache.dubbo.common.logger.Logger logger>;
v = virtualinvoke v.<org.apache.dubbo.common.logger.support.FailsafeLogger: org.apache.dubbo.common.logger.Logger getLogger()>();
<org.apache.dubbo.common.utils.NetUtils: org.apache.dubbo.common.logger.Logger logger> = v;
label:
v = staticinvoke <java.util.regex.Pattern: java.util.regex.Pattern compile(java.lang.String)>("^\\d{1,3}(\\.\\d{1,3}){3}\\:\\d{1,5}$");
<org.apache.dubbo.common.utils.NetUtils: java.util.regex.Pattern ADDRESS_PATTERN> = v;
v = staticinvoke <java.util.regex.Pattern: java.util.regex.Pattern compile(java.lang.String)>("127(\\.\\d{1,3}){3}$");
<org.apache.dubbo.common.utils.NetUtils: java.util.regex.Pattern LOCAL_IP_PATTERN> = v;
v = staticinvoke <java.util.regex.Pattern: java.util.regex.Pattern compile(java.lang.String)>("\\d{1,3}(\\.\\d{1,3}){3,5}$");
<org.apache.dubbo.common.utils.NetUtils: java.util.regex.Pattern IP_PATTERN> = v;
v = new org.apache.dubbo.common.utils.LRUCache;
specialinvoke v.<org.apache.dubbo.common.utils.LRUCache: void <init>(int)>(1000);
<org.apache.dubbo.common.utils.NetUtils: java.util.Map HOST_NAME_CACHE> = v;
<org.apache.dubbo.common.utils.NetUtils: java.net.InetAddress LOCAL_ADDRESS> = null;
return;
}
}