File Coverage

lib/Rex/Helper/IP.pm
Criterion Covered Total %
statement 25 25 100.0
branch 10 10 100.0
condition 7 9 77.7
subroutine 5 5 100.0
pod 0 2 0.0
total 47 51 92.1


line stmt bran cond sub pod time code
1             #
2             # (c) Jan Gehring
3             #
4              
5             package Rex::Helper::IP;
6              
7 3     3   516 use v5.12.5;
  3         37  
8 3     3   20 use warnings;
  3         6  
  3         172  
9              
10             our $VERSION = '1.14.2.3'; # TRIAL VERSION
11              
12 3     3   535 use Data::Validate::IP 'is_ipv4', 'is_ipv6';
  3         83699  
  3         961  
13              
14             sub is_ip {
15 3     3 0 7 my ($ip) = @_;
16              
17 3 100 100     8 if ( is_ipv4($ip) || is_ipv6($ip) ) {
18 2         65 return 1;
19             }
20 1         30 return 0;
21             }
22              
23             sub get_server_and_port {
24 8     8 0 8775 my ( $server, $default_port ) = @_;
25              
26 8         15 my ( $rs, $rp );
27              
28 8 100 100     50 if ( $server =~ m/:(\d+)$/ && !is_ipv6($server) ) {
29 2         43 return split( /:/, $server );
30             }
31              
32 6 100       51 if ( $server =~ m/\/(\d+)$/ ) {
33 3         17 return split( /\/(\d+)$/, $server );
34             }
35              
36 3 100       7 if ( is_ip($server) ) {
37 2 100       5 if ( is_ipv6($server) ) {
38 1         19 ( $rs, $rp ) = split( /\//, $server );
39             }
40             else {
41 1         25 ( $rs, $rp ) = split( /[:\/]/, $server );
42             }
43             }
44             else {
45 1         4 ( $rs, $rp ) = split( /[:\/]/, $server );
46             }
47              
48 3   33     15 $rp ||= $default_port;
49              
50 3         11 return ( $rs, $rp );
51             }
52              
53             1;