|
Lines 20-26
Link Here
|
| 20 |
|
20 |
|
| 21 |
use strict; |
21 |
use strict; |
| 22 |
use warnings; |
22 |
use warnings; |
| 23 |
use Test::More tests => 14; |
23 |
use Test::More tests => 13; |
| 24 |
use Test::Warn; |
24 |
use Test::Warn; |
| 25 |
|
25 |
|
| 26 |
use t::lib::Mocks; |
26 |
use t::lib::Mocks; |
|
Lines 85-106
t::lib::Mocks::mock_config('koha_trusted_proxies', '1.1.1.0:255.255.255.0');
Link Here
|
| 85 |
$address = Koha::Middleware::RealIP::get_real_ip( $remote_address, $x_forwarded_for_header ); |
85 |
$address = Koha::Middleware::RealIP::get_real_ip( $remote_address, $x_forwarded_for_header ); |
| 86 |
is($address,'2.2.2.2',"Trust proxy (1.1.1.1) using an IP address and netmask separated by a colon, so use the X-Forwarded-For header for the remote address"); |
86 |
is($address,'2.2.2.2',"Trust proxy (1.1.1.1) using an IP address and netmask separated by a colon, so use the X-Forwarded-For header for the remote address"); |
| 87 |
|
87 |
|
| 88 |
require Net::Netmask; |
88 |
subtest "IPv6 support" => sub { |
| 89 |
SKIP: { |
89 |
my ($remote_address,$x_forwarded_for_header,$address); |
| 90 |
skip "Net::Netmask at 1.9104+ supports IPv6", 2 unless Net::Netmask->VERSION < 1.9104; |
90 |
require Net::Netmask; |
| 91 |
|
91 |
if (Net::Netmask->VERSION < 1.9104){ |
| 92 |
$remote_address = "2001:db8:1234:5678:abcd:1234:abcd:1234"; |
92 |
$remote_address = "2001:db8:1234:5678:abcd:1234:abcd:1234"; |
| 93 |
$x_forwarded_for_header = "2.2.2.2"; |
93 |
$x_forwarded_for_header = "2.2.2.2"; |
| 94 |
t::lib::Mocks::mock_config( 'koha_trusted_proxies', '2001:db8:1234:5678::/64' ); |
94 |
t::lib::Mocks::mock_config( 'koha_trusted_proxies', '2001:db8:1234:5678::/64' ); |
| 95 |
warning_is { |
95 |
|
| 96 |
$address = Koha::Middleware::RealIP::get_real_ip( $remote_address, |
96 |
warning_is { |
| 97 |
$x_forwarded_for_header ); |
97 |
$address = Koha::Middleware::RealIP::get_real_ip( $remote_address, |
|
|
98 |
$x_forwarded_for_header ); |
| 99 |
} |
| 100 |
"could not parse 2001:db8:1234:5678::/64", |
| 101 |
"Warn on IPv6 koha_trusted_proxies"; |
| 102 |
is( |
| 103 |
$address, |
| 104 |
'2001:db8:1234:5678:abcd:1234:abcd:1234', |
| 105 |
"Unable to parse IPv6 address for trusted proxy, so ignore the X-Forwarded-For header" |
| 106 |
); |
| 107 |
done_testing(2); |
| 108 |
} else { |
| 109 |
$remote_address = "2001:db8:1234:5678:abcd:1234:abcd:1234"; |
| 110 |
$x_forwarded_for_header = "2.2.2.2"; |
| 111 |
t::lib::Mocks::mock_config( 'koha_trusted_proxies', '2001:db8:1234:5678::/64' ); |
| 112 |
|
| 113 |
$address = Koha::Middleware::RealIP::get_real_ip( $remote_address,$x_forwarded_for_header ); |
| 114 |
is($address,'2.2.2.2',"Trust proxy (2001:db8:1234:5678:abcd:1234:abcd:1234) using IPv6 CIDR notation, so use the X-Forwarded-For header for the remote address"); |
| 115 |
done_testing(1); |
| 98 |
} |
116 |
} |
| 99 |
"could not parse 2001:db8:1234:5678::/64", |
117 |
}; |
| 100 |
"Warn on IPv6 koha_trusted_proxies"; |
|
|
| 101 |
is( |
| 102 |
$address, |
| 103 |
'2001:db8:1234:5678:abcd:1234:abcd:1234', |
| 104 |
"IPv6 support was added in 1.9104 version of Net::Netmask" |
| 105 |
); |
| 106 |
} |
| 107 |
- |
|
|