From 7eb4921f027be0f86dc857f97291a1bd0399508e Mon Sep 17 00:00:00 2001 From: Nick Clemens Date: Tue, 29 Apr 2025 16:26:39 +0000 Subject: [PATCH] Bug 36867: (follow-up) Don't check IP if ILS-DI disabled When ILS-DI is disabled we still expect to return the correct service name/section in the xml, but just indicate that it is disabled. We should skip the check for authorized IPs in this case, as the IP only matters when service is enabled Signed-off-by: wainuiwitikapark (cherry picked from commit fd6d58bb4bf1c5628a7bfc7c26e4de66230aa1a5) Signed-off-by: Fridolin Somers --- opac/ilsdi.pl | 58 ++++++++++++++++++++++++++------------------------- 1 file changed, 30 insertions(+), 28 deletions(-) diff --git a/opac/ilsdi.pl b/opac/ilsdi.pl index 422df4ccc7..b5d80f9803 100755 --- a/opac/ilsdi.pl +++ b/opac/ilsdi.pl @@ -159,36 +159,38 @@ my $out; unless ( C4::Context->preference('ILS-DI') ) { $out->{'code'} = "NotAllowed"; $out->{'message'} = "ILS-DI is disabled."; -} - -# If the remote address is not allowed, redirect to 403 -my @AuthorizedIPs = split( /,/, C4::Context->preference('ILS-DI:AuthorizedIPs') ); -if (@AuthorizedIPs) { # If no filter set, allow access to everybody - my $authorized = 0; - foreach my $ip (@AuthorizedIPs) { - my $netmask = Net::Netmask->new2($ip); - if ( $netmask && $netmask->match( $ENV{REMOTE_ADDR} ) ) { - $authorized = 1; - last; - } - } - unless ($authorized) { - $out->{'code'} = "NotAllowed"; - $out->{'message'} = "Unauthorized IP address: $ENV{REMOTE_ADDR}."; - } } else { - $out->{'code'} = "NotAllowed"; - $out->{'message'} = "Unauthorized IP address: $ENV{REMOTE_ADDR}."; - print XMLout( - $out, - noattr => 1, - nosort => 1, - xmldecl => '', - RootName => "ilsdi", - SuppressEmpty => 1 - ); - exit 0; + # If the remote address is not allowed, redirect to 403 + my @AuthorizedIPs = split( /,/, C4::Context->preference('ILS-DI:AuthorizedIPs') ); + if (@AuthorizedIPs) { # If no filter set, allow access to everybody + my $authorized = 0; + foreach my $ip (@AuthorizedIPs) { + my $netmask = Net::Netmask->new2($ip); + if ( $netmask && $netmask->match( $ENV{REMOTE_ADDR} ) ) { + $authorized = 1; + last; + } + } + unless ($authorized) { + $out->{'code'} = "NotAllowed"; + $out->{'message'} = "Unauthorized IP address: $ENV{REMOTE_ADDR}."; + } + } else { + $out->{'code'} = "NotAllowed"; + $out->{'message'} = "Unauthorized IP address: $ENV{REMOTE_ADDR}."; + + print XMLout( + $out, + noattr => 1, + nosort => 1, + xmldecl => '', + RootName => "ilsdi", + SuppressEmpty => 1 + ); + exit 0; + } + } my $service = $cgi->param('service') || "ilsdi";