change code

This commit is contained in:
looly 2021-12-12 09:41:34 +08:00
parent 6c120dd568
commit f7db6c75d5
2 changed files with 60 additions and 33 deletions

View File

@ -22,6 +22,8 @@ import java.util.regex.Matcher;
*/
public class Ipv4Util {
public static final String LOCAL_IP = "127.0.0.1";
/**
* IP段的分割符
*/
@ -305,6 +307,36 @@ public class Ipv4Util {
return MaskBit.get(maskBit) != null;
}
/**
* 判定是否为内网IPv4<br>
* 私有IP
* <pre>
* A类 10.0.0.0-10.255.255.255
* B类 172.16.0.0-172.31.255.255
* C类 192.168.0.0-192.168.255.255
* </pre>
* 当然还有127这个网段是环回地址
*
* @param ipAddress IP地址
* @return 是否为内网IP
* @since 5.7.18
*/
public static boolean isInnerIP(String ipAddress) {
boolean isInnerIp;
long ipNum = ipv4ToLong(ipAddress);
long aBegin = ipv4ToLong("10.0.0.0");
long aEnd = ipv4ToLong("10.255.255.255");
long bBegin = ipv4ToLong("172.16.0.0");
long bEnd = ipv4ToLong("172.31.255.255");
long cBegin = ipv4ToLong("192.168.0.0");
long cEnd = ipv4ToLong("192.168.255.255");
isInnerIp = isInner(ipNum, aBegin, aEnd) || isInner(ipNum, bBegin, bEnd) || isInner(ipNum, cBegin, cEnd) || LOCAL_IP.equals(ipAddress);
return isInnerIp;
}
//-------------------------------------------------------------------------------- Private method start
@ -334,5 +366,17 @@ public class Ipv4Util {
}
return addr;
}
/**
* 指定IP的long是否在指定范围内
*
* @param userIp 用户IP
* @param begin 开始IP
* @param end 结束IP
* @return 是否在范围内
*/
private static boolean isInner(long userIp, long begin, long end) {
return (userIp >= begin) && (userIp <= end);
}
//-------------------------------------------------------------------------------- Private method end
}

View File

@ -48,7 +48,7 @@ import java.util.TreeSet;
*/
public class NetUtil {
public final static String LOCAL_IP = "127.0.0.1";
public final static String LOCAL_IP = Ipv4Util.LOCAL_IP;
public static String localhostName;
@ -230,27 +230,21 @@ public class NetUtil {
}
/**
* 判定是否为内网IP<br>
* 私有IPA类 10.0.0.0-10.255.255.255 B类 172.16.0.0-172.31.255.255 C类 192.168.0.0-192.168.255.255 当然还有127这个网段是环回地址
* 判定是否为内网IPv4<br>
* 私有IP
* <pre>
* A类 10.0.0.0-10.255.255.255
* B类 172.16.0.0-172.31.255.255
* C类 192.168.0.0-192.168.255.255
* </pre>
* 当然还有127这个网段是环回地址
*
* @param ipAddress IP地址
* @return 是否为内网IP
* @see Ipv4Util#isInnerIP(String)
*/
public static boolean isInnerIP(String ipAddress) {
boolean isInnerIp;
long ipNum = NetUtil.ipv4ToLong(ipAddress);
long aBegin = NetUtil.ipv4ToLong("10.0.0.0");
long aEnd = NetUtil.ipv4ToLong("10.255.255.255");
long bBegin = NetUtil.ipv4ToLong("172.16.0.0");
long bEnd = NetUtil.ipv4ToLong("172.31.255.255");
long cBegin = NetUtil.ipv4ToLong("192.168.0.0");
long cEnd = NetUtil.ipv4ToLong("192.168.255.255");
isInnerIp = isInner(ipNum, aBegin, aEnd) || isInner(ipNum, bBegin, bEnd) || isInner(ipNum, cBegin, cEnd) || LOCAL_IP.equals(ipAddress);
return isInnerIp;
return Ipv4Util.isInnerIP(ipAddress);
}
/**
@ -700,7 +694,7 @@ public class NetUtil {
*/
public static boolean isInRange(String ip, String cidr) {
final int maskSplitMarkIndex = cidr.lastIndexOf(Ipv4Util.IP_MASK_SPLIT_MARK);
if(maskSplitMarkIndex < 0){
if (maskSplitMarkIndex < 0) {
throw new IllegalArgumentException("Invalid cidr: " + cidr);
}
@ -839,15 +833,15 @@ public class NetUtil {
*
* @param hostName 主机域名
* @param attrNames 属性
* @since 5.7.7
* @return DNS信息
* @since 5.7.7
*/
public static List<String> getDnsInfo(String hostName, String... attrNames){
public static List<String> getDnsInfo(String hostName, String... attrNames) {
final String uri = StrUtil.addPrefixIfNot(hostName, "dns:");
final Attributes attributes = JNDIUtil.getAttributes(uri, attrNames);
final List<String> infos = new ArrayList<>();
for (Attribute attribute: new EnumerationIter<>(attributes.getAll())){
for (Attribute attribute : new EnumerationIter<>(attributes.getAll())) {
try {
infos.add((String) attribute.get());
} catch (NamingException ignore) {
@ -859,16 +853,5 @@ public class NetUtil {
// ----------------------------------------------------------------------------------------- Private method start
/**
* 指定IP的long是否在指定范围内
*
* @param userIp 用户IP
* @param begin 开始IP
* @param end 结束IP
* @return 是否在范围内
*/
private static boolean isInner(long userIp, long begin, long end) {
return (userIp >= begin) && (userIp <= end);
}
// ----------------------------------------------------------------------------------------- Private method end
}