Coverage Summary for Class: IpUtils (co.rsk.util)
Class |
Class, %
|
Method, %
|
Line, %
|
IpUtils |
0%
(0/1)
|
0%
(0/5)
|
0%
(0/22)
|
1 package co.rsk.util;
2
3 import org.apache.commons.lang3.StringUtils;
4 import org.slf4j.Logger;
5 import org.slf4j.LoggerFactory;
6
7 import java.net.InetSocketAddress;
8 import java.util.ArrayList;
9 import java.util.List;
10 import java.util.regex.Matcher;
11 import java.util.regex.Pattern;
12
13 /**
14 * Created by mario on 13/07/17.
15 */
16 public class IpUtils {
17 private static final Logger logger = LoggerFactory.getLogger(IpUtils.class);
18
19 private static final String IPV6_INPUT_FORMAT = "^\\[(.*)\\]:([0-9]{1,})";
20 private static final String IPV4_INPUT_FORMAT = "^([^:]*):([0-9]{1,})";
21 private static final Pattern ipv6Pattern = Pattern.compile(IPV6_INPUT_FORMAT);
22 private static final Pattern ipv4Pattern = Pattern.compile(IPV4_INPUT_FORMAT);
23
24
25 public static InetSocketAddress parseAddress(String address) {
26 if(StringUtils.isBlank(address)) {
27 return null;
28 }
29
30 Matcher matcher = ipv6Pattern.matcher(address);
31 if(matcher.matches()) {
32 return parseMatch(matcher);
33 }
34
35 matcher = ipv4Pattern.matcher(address);
36 if (matcher.matches() && matcher.groupCount() == 2) {
37 return parseMatch(matcher);
38 }
39
40 logger.debug("Invalid address: {}. For ipv6 use de convention [address]:port. For ipv4 address:port", address);
41 return null;
42 }
43
44 public static List<InetSocketAddress> parseAddresses(List<String> addresses) {
45 List<InetSocketAddress> result = new ArrayList<>();
46 for(String a : addresses) {
47 InetSocketAddress res = parseAddress(a);
48 if (res != null) {
49 result.add(res);
50 }
51 }
52 return result;
53 }
54
55 private static InetSocketAddress parseMatch(Matcher matcher) {
56 return new InetSocketAddress(matcher.group(1), Integer.valueOf(matcher.group(2)));
57 }
58 }