public static Collection<String> getMatchingIpv4Addresses(final AddressMatcher addressMatcher) { if (addressMatcher.isIPv6()) { throw new IllegalArgumentException("Cannot wildcard matching for IPv6: " + addressMatcher); } final Collection<String> addresses = new HashSet<String>(); final String first3 = addressMatcher.address[0] + '.' + addressMatcher.address[1] + '.' + addressMatcher.address[2]; final String lastPart = addressMatcher.address[3]; final int dashPos; if ("*".equals(lastPart)) { for (int j = 0; j <= NUMBER_OF_ADDRESSES; j++) { addresses.add(first3 + '.' + j); } } else if (lastPart.indexOf('-') > 0) { dashPos = lastPart.indexOf('-'); final int start = Integer.parseInt(lastPart.substring(0, dashPos)); final int end = Integer.parseInt(lastPart.substring(dashPos + 1)); for (int j = start; j <= end; j++) { addresses.add(first3 + '.' + j); } } else { addresses.add(addressMatcher.getAddress()); } return addresses; }
private static void parseIpv6(AddressMatcher matcher, String addrs) { String address = addrs; if (address.indexOf('%') > -1) { String[] parts = address.split("\\%"); address = parts[0]; } final String[] parts = address.split("((?<=:)|(?=:))"); final Collection<String> ipString = parseIPV6parts(parts, address); if (ipString.size() != IPV6_LENGTH) { throw new InvalidAddressException(address); } final String[] addressParts = ipString.toArray(new String[0]); checkIfAddressPartsAreValid(addressParts, address); matcher.setAddress(addressParts); }
if (addressMatcher.isIPv4()) { matchedAddresses = AddressUtil.getMatchingIpv4Addresses(addressMatcher); } else {
if (addressMatcher.isIPv4()) { matchedAddresses = AddressUtil.getMatchingIpv4Addresses(addressMatcher); } else {
public static Collection<String> getMatchingIpv4Addresses(final AddressMatcher addressMatcher) { if (addressMatcher.isIPv6()) { throw new IllegalArgumentException("Cannot wildcard matching for IPv6: " + addressMatcher); } final Collection<String> addresses = new HashSet<String>(); final String first3 = addressMatcher.address[0] + '.' + addressMatcher.address[1] + '.' + addressMatcher.address[2]; final String lastPart = addressMatcher.address[3]; final int dashPos; if ("*".equals(lastPart)) { for (int j = 0; j <= NUMBER_OF_ADDRESSES; j++) { addresses.add(first3 + '.' + j); } } else if (lastPart.indexOf('-') > 0) { dashPos = lastPart.indexOf('-'); final int start = Integer.parseInt(lastPart.substring(0, dashPos)); final int end = Integer.parseInt(lastPart.substring(dashPos + 1)); for (int j = start; j <= end; j++) { addresses.add(first3 + '.' + j); } } else { addresses.add(addressMatcher.getAddress()); } return addresses; }
private static void parseIpv6(AddressMatcher matcher, String addrs) { String address = addrs; if (address.indexOf('%') > -1) { String[] parts = address.split("\\%"); address = parts[0]; } final String[] parts = address.split("((?<=:)|(?=:))"); final Collection<String> ipString = parseIPV6parts(parts, address); if (ipString.size() != IPV6_LENGTH) { throw new InvalidAddressException(address); } final String[] addressParts = ipString.toArray(new String[0]); checkIfAddressPartsAreValid(addressParts, address); matcher.setAddress(addressParts); }
@Override public boolean match(final AddressMatcher matcher) { if (matcher.isIPv4()) { return false; } final Ip6AddressMatcher a = (Ip6AddressMatcher) matcher; final String[] mask = this.address; final String[] input = a.address; return match(mask, input, HEXADECIMAL_RADIX); }
@Override public String toString() { return getClass().getSimpleName() + '{' + getAddress() + '}'; } }
public static boolean matchInterface(String address, String interfaceMask) { final AddressMatcher mask; try { mask = getAddressMatcher(interfaceMask); } catch (Exception e) { return false; } return mask.match(address); }
@Override public boolean match(final AddressMatcher matcher) { if (matcher.isIPv6()) { return false; } final String[] mask = this.address; final String[] input = ((Ip4AddressMatcher) matcher).address; return match(mask, input, DECIMAL_RADIX); }
protected final boolean match(final String[] mask, String[] input, int radix) { if (input != null && mask != null) { for (int i = 0; i < mask.length; i++) { if (!doMatch(mask[i], input[i], radix)) { return false; } } return true; } return false; }
@Override public boolean match(final AddressMatcher matcher) { if (matcher.isIPv4()) { return false; } final Ip6AddressMatcher a = (Ip6AddressMatcher) matcher; final String[] mask = this.address; final String[] input = a.address; return match(mask, input, HEXADECIMAL_RADIX); }
public boolean match(final String address) { try { return match(getAddressMatcher(address)); } catch (Exception e) { return false; } }
@Override public String toString() { return getClass().getSimpleName() + '{' + getAddress() + '}'; } }
private static void parseIpv4(AddressMatcher matcher, String address) { final String[] parts = address.split("\\."); if (parts.length != IPV4_LENGTH) { throw new InvalidAddressException(address); } for (String part : parts) { if (!isValidIpAddressPart(part, false)) { throw new InvalidAddressException(address); } } matcher.setAddress(parts); }
private static void parseIpv4(AddressMatcher matcher, String address) { final String[] parts = address.split("\\."); if (parts.length != IPV4_LENGTH) { throw new InvalidAddressException(address); } for (String part : parts) { if (!isValidIpAddressPart(part, false)) { throw new InvalidAddressException(address); } } matcher.setAddress(parts); }
@Override public boolean match(final AddressMatcher matcher) { if (matcher.isIPv6()) { return false; } final String[] mask = this.address; final String[] input = ((Ip4AddressMatcher) matcher).address; return match(mask, input, DECIMAL_RADIX); }
protected final boolean match(final String[] mask, String[] input, int radix) { if (input != null && mask != null) { for (int i = 0; i < mask.length; i++) { if (!doMatch(mask[i], input[i], radix)) { return false; } } return true; } return false; }
public static boolean matchInterface(String address, String interfaceMask) { final AddressMatcher mask; try { mask = getAddressMatcher(interfaceMask); } catch (Exception e) { return false; } return mask.match(address); }
public boolean match(final String address) { try { return match(getAddressMatcher(address)); } catch (Exception e) { return false; } }