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