Lines 51-65
sub call {
Link Here
|
51 |
my $self = shift; |
51 |
my $self = shift; |
52 |
my $env = shift; |
52 |
my $env = shift; |
53 |
|
53 |
|
54 |
my $reverse_proxy_ip_header = C4::Context->config('reverse_proxy_ip_header'); |
54 |
# If no reverse_proxy_ip_header, just use HTTP_X_FORWARDED_FOR as the header to check, simplifies logic and is a bit faster that way |
55 |
if ( $reverse_proxy_ip_header && $env->{$reverse_proxy_ip_header} ) { |
55 |
my $reverse_proxy_ip_header = C4::Context->config('reverse_proxy_ip_header') || 'HTTP_X_FORWARDED_FOR'; |
56 |
my @trusted_proxy = $self->trusted_proxy ? @{ $self->trusted_proxy } : undef; |
56 |
|
57 |
|
57 |
# Check the env for the custom header, if the custom header is not set, fall back to HTTP_X_FORWARDED_FOR |
58 |
if (@trusted_proxy) { |
58 |
my $header = $env->{$reverse_proxy_ip_header} || $env->{'HTTP_X_FORWARDED_FOR'}; |
59 |
my $addr = get_real_ip( $env->{REMOTE_ADDR}, $env->{$reverse_proxy_ip_header}, \@trusted_proxy ); |
59 |
if ($header) { |
60 |
$ENV{REMOTE_ADDR} = $addr; |
60 |
my $addr = get_real_ip( $env->{REMOTE_ADDR}, $header ); |
61 |
$env->{REMOTE_ADDR} = $addr; |
61 |
$ENV{REMOTE_ADDR} = $addr; |
62 |
} |
62 |
$env->{REMOTE_ADDR} = $addr; |
63 |
} |
63 |
} |
64 |
|
64 |
|
65 |
return $self->app->($env); |
65 |
return $self->app->($env); |
66 |
- |
|
|