View | Details | Raw Unified | Return to bug 39789
Collapse All | Expand All

(-)a/C4/Context.pm (-7 / +6 lines)
Lines 880-892 variable to be set correctly. Link Here
880
sub set_remote_address {
880
sub set_remote_address {
881
    if ( C4::Context->config('koha_trusted_proxies') ) {
881
    if ( C4::Context->config('koha_trusted_proxies') ) {
882
        require CGI;
882
        require CGI;
883
        if ( my $reverse_proxy_ip_header = C4::Context->config('reverse_proxy_ip_header') ) {    # Updated here
883
        my $reverse_proxy_ip_header = C4::Context->config('reverse_proxy_ip_header');
884
            my $header = CGI->http($reverse_proxy_ip_header);
884
        my $header                  = $reverse_proxy_ip_header ? CGI->http($reverse_proxy_ip_header) : undef;
885
885
        $header ||= CGI->http('HTTP_X_FORWARDED_FOR');    # If custom header is not set, fallback to X-Forwarded-For
886
            if ($header) {
886
        if ($header) {
887
                require Koha::Middleware::RealIP;
887
            require Koha::Middleware::RealIP;
888
                $ENV{REMOTE_ADDR} = Koha::Middleware::RealIP::get_real_ip( $ENV{REMOTE_ADDR}, $header );
888
            $ENV{REMOTE_ADDR} = Koha::Middleware::RealIP::get_real_ip( $ENV{REMOTE_ADDR}, $header );
889
            }
890
        }
889
        }
891
    }
890
    }
892
}
891
}
(-)a/Koha/Middleware/RealIP.pm (-9 / +6 lines)
Lines 52-65 sub call { Link Here
52
    my $env  = shift;
52
    my $env  = shift;
53
53
54
    my $reverse_proxy_ip_header = C4::Context->config('reverse_proxy_ip_header');
54
    my $reverse_proxy_ip_header = C4::Context->config('reverse_proxy_ip_header');
55
    if ( $reverse_proxy_ip_header && $env->{$reverse_proxy_ip_header} ) {
55
    my $header                  = $reverse_proxy_ip_header ? CGI->http($reverse_proxy_ip_header) : undef;
56
        my @trusted_proxy = $self->trusted_proxy ? @{ $self->trusted_proxy } : undef;
56
    $header ||= CGI->http('HTTP_X_FORWARDED_FOR');    # If custom header is not set, fallback to X-Forwarded-For
57
57
    if ($header) {
58
        if (@trusted_proxy) {
58
        my $addr = get_real_ip( $env->{REMOTE_ADDR}, $header );
59
            my $addr = get_real_ip( $env->{REMOTE_ADDR}, $env->{$reverse_proxy_ip_header}, \@trusted_proxy );
59
        $ENV{REMOTE_ADDR} = $addr;
60
            $ENV{REMOTE_ADDR} = $addr;
60
        $env->{REMOTE_ADDR} = $addr;
61
            $env->{REMOTE_ADDR} = $addr;
62
        }
63
    }
61
    }
64
62
65
    return $self->app->($env);
63
    return $self->app->($env);
66
- 

Return to bug 39789