1package eu.siacs.conversations.utils;
2
3import com.google.common.net.InetAddresses;
4import java.net.InetAddress;
5
6public class IP {
7
8 public static boolean matches(final String server) {
9 return server != null
10 && (Patterns.IPV4.matcher(server).matches()
11 || Patterns.IPV6.matcher(server).matches()
12 || Patterns.IPV6_6HEX4DEC.matcher(server).matches()
13 || Patterns.IPV6_HEX4_DECOMPRESSED.matcher(server).matches()
14 || Patterns.IPV6_HEX_COMPRESSED.matcher(server).matches());
15 }
16
17 public static String wrapIPv6(final String host) {
18 if (InetAddresses.isInetAddress(host)) {
19 final InetAddress inetAddress;
20 try {
21 inetAddress = InetAddresses.forString(host);
22 } catch (final IllegalArgumentException e) {
23 return host;
24 }
25 return InetAddresses.toUriString(inetAddress);
26 } else {
27 return host;
28 }
29 }
30
31 public static String unwrapIPv6(final String host) {
32 if (host.length() > 2 && host.charAt(0) == '[' && host.charAt(host.length() - 1) == ']') {
33 final String ip = host.substring(1, host.length() - 1);
34 if (InetAddresses.isInetAddress(ip)) {
35 return ip;
36 }
37 }
38 return host;
39 }
40}