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

(-)a/C4/Context.pm (-4 / +6 lines)
Lines 880-890 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
        my $header = CGI->http('HTTP_X_FORWARDED_FOR');
883
        if ( my $ReverseProxyIpHeader = C4::Context->preference('ReverseProxyIpHeader') ) {
884
            my $header = CGI->http($ReverseProxyIpHeader);
884
885
885
        if ($header) {
886
            if ($header) {
886
            require Koha::Middleware::RealIP;
887
                require Koha::Middleware::RealIP;
887
            $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
            }
888
        }
890
        }
889
    }
891
    }
890
}
892
}
(-)a/Koha/Middleware/RealIP.pm (-2 / +3 lines)
Lines 51-61 sub call { Link Here
51
    my $self = shift;
51
    my $self = shift;
52
    my $env  = shift;
52
    my $env  = shift;
53
53
54
    if ( $env->{HTTP_X_FORWARDED_FOR} ) {
54
    my $ReverseProxyIpHeader = C4::Context->preference('ReverseProxyIpHeader');
55
    if ( $ReverseProxyIpHeader && $env->{$ReverseProxyIpHeader} ) {
55
        my @trusted_proxy = $self->trusted_proxy ? @{ $self->trusted_proxy } : undef;
56
        my @trusted_proxy = $self->trusted_proxy ? @{ $self->trusted_proxy } : undef;
56
57
57
        if (@trusted_proxy) {
58
        if (@trusted_proxy) {
58
            my $addr = get_real_ip( $env->{REMOTE_ADDR}, $env->{HTTP_X_FORWARDED_FOR}, \@trusted_proxy );
59
            my $addr = get_real_ip( $env->{REMOTE_ADDR}, $env->{$ReverseProxyIpHeader}, \@trusted_proxy );
59
            $ENV{REMOTE_ADDR} = $addr;
60
            $ENV{REMOTE_ADDR} = $addr;
60
            $env->{REMOTE_ADDR} = $addr;
61
            $env->{REMOTE_ADDR} = $addr;
61
        }
62
        }
(-)a/installer/data/mysql/atomicupdate/bug_39789.pl (+20 lines)
Line 0 Link Here
1
use Modern::Perl;
2
use Koha::Installer::Output qw(say_warning say_success say_info);
3
4
return {
5
    bug_number  => "29789",
6
    description => "Add new system preference ReverseProxyIpHeader",
7
    up          => sub {
8
        my ($args) = @_;
9
        my ( $dbh, $out ) = @$args{qw(dbh out)};
10
11
        my $rv = $dbh->do(
12
            q{
13
            INSERT IGNORE INTO systempreferences ( `variable`, `value`, `options`, `explanation`, `type` )
14
            VALUES ('ReverseProxyIpHeader','HTTP_X_FORWARDED_FOR',NULL,'Header environment variable ','free')
15
        }
16
        );
17
18
        say $out "Added new system preference 'ReverseProxyIpHeader'";
19
    },
20
};
(-)a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/admin.pref (-1 / +5 lines)
Lines 107-112 Administration: Link Here
107
                  1: "Yes"
107
                  1: "Yes"
108
                  0: "No"
108
                  0: "No"
109
            - (Disable only when remote IP address changes frequently.)
109
            - (Disable only when remote IP address changes frequently.)
110
        -
111
            - Look in the header
112
            - pref: ReverseProxyIpHeader
113
              class: url
114
            - for IP addresses that http requests have been forwarded from.
110
        -
115
        -
111
            - "Set logged in library for staff by matching their current IP to the library configuration: "
116
            - "Set logged in library for staff by matching their current IP to the library configuration: "
112
            - pref: StaffLoginLibraryBasedOnIP
117
            - pref: StaffLoginLibraryBasedOnIP
113
- 

Return to bug 39789