From 7ca590fc9c27f7360b2c5d218da2754d7c0676d9 Mon Sep 17 00:00:00 2001 From: Nicholas van Oudtshoorn <vanoudt@gmail.com> Date: Wed, 13 Mar 2024 16:10:01 +0800 Subject: [PATCH] Add Cloudflare support to in_iprange function --- lib/C4/Auth.pm | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/lib/C4/Auth.pm b/lib/C4/Auth.pm index 9b298ee..ade315c 100644 --- a/lib/C4/Auth.pm +++ b/lib/C4/Auth.pm @@ -2319,8 +2319,13 @@ sub in_iprange { my @allowedipranges = $iprange ? split(' ', $iprange) : (); if (scalar @allowedipranges > 0) { my @rangelist; - eval { @rangelist = Net::CIDR::range2cidr(@allowedipranges); }; return 0 if $@; - eval { $result = Net::CIDR::cidrlookup($ENV{'REMOTE_ADDR'}, @rangelist) } || Koha::Logger->get->warn('cidrlookup failed for ' . join(' ',@rangelist) ); + eval { @rangelist = Net::CIDR::range2cidr(@allowedipranges); }; return 0 if $@; + + if (defined $ENV{'HTTP_CF_CONNECTING_IP'}) { + eval { $result = Net::CIDR::cidrlookup($ENV{'HTTP_CF_CONNECTING_IP'}, @rangelist) } || Koha::Logger->get->warn('cidrlookup failed for ' . $ENV{'HTTP_CF_CONNECTING_IP'}. ' in '. join(' ',@rangelist) ); + } else { + eval { $result = Net::CIDR::cidrlookup($ENV{'REMOTE_ADDR'}, @rangelist) } || Koha::Logger->get->warn('cidrlookup failed for ' . $ENV{'REMOTE_ADDR'} . ' in '. join(' ',@rangelist) ); + } } return $result ? 1 : 0; } -- 2.34.1