Lines 1197-1212
sub checkauth {
Link Here
|
1197 |
|
1197 |
|
1198 |
# we have to check they are coming from the right ip range |
1198 |
# we have to check they are coming from the right ip range |
1199 |
my $domain = $branches->{$branchcode}->{'branchip'}; |
1199 |
my $domain = $branches->{$branchcode}->{'branchip'}; |
1200 |
$domain =~ s|\.\*||g; |
1200 |
next unless ($domain); |
1201 |
if ( $ip !~ /^$domain/ ) { |
1201 |
if ( !in_iprange($domain) ) { |
1202 |
$loggedin = 0; |
1202 |
$loggedin = 0; |
1203 |
$cookie = $cookie_mgr->replace_in_list( $cookie, $query->cookie( |
1203 |
$cookie = $cookie_mgr->replace_in_list( |
1204 |
-name => 'CGISESSID', |
1204 |
$cookie, |
1205 |
-value => '', |
1205 |
$query->cookie( |
1206 |
-HttpOnly => 1, |
1206 |
-name => 'CGISESSID', |
1207 |
-secure => ( C4::Context->https_enabled() ? 1 : 0 ), |
1207 |
-value => '', |
1208 |
-sameSite => 'Lax', |
1208 |
-HttpOnly => 1, |
1209 |
)); |
1209 |
-secure => ( C4::Context->https_enabled() ? 1 : 0 ), |
|
|
1210 |
-sameSite => 'Lax', |
1211 |
) |
1212 |
); |
1210 |
$info{'wrongip'} = 1; |
1213 |
$info{'wrongip'} = 1; |
1211 |
} |
1214 |
} |
1212 |
} |
1215 |
} |
Lines 1215-1225
sub checkauth {
Link Here
|
1215 |
|
1218 |
|
1216 |
# now we work with the treatment of ip |
1219 |
# now we work with the treatment of ip |
1217 |
my $domain = $branches->{$br}->{'branchip'}; |
1220 |
my $domain = $branches->{$br}->{'branchip'}; |
1218 |
if ( $domain && $ip =~ /^$domain/ ) { |
1221 |
next unless ($domain); |
|
|
1222 |
if ( in_iprange($domain) ) { |
1219 |
$branchcode = $branches->{$br}->{'branchcode'}; |
1223 |
$branchcode = $branches->{$br}->{'branchcode'}; |
1220 |
|
1224 |
|
1221 |
# new op dev : add the branchname to the cookie |
1225 |
# new op dev : add the branchname to the cookie |
1222 |
$branchname = $branches->{$br}->{'branchname'}; |
1226 |
$branchname = $branches->{$br}->{'branchname'}; |
1223 |
} |
1227 |
} |
1224 |
} |
1228 |
} |
1225 |
|
1229 |
|
Lines 1651-1668
sub check_api_auth {
Link Here
|
1651 |
if ( $query->param('branch') ) { |
1655 |
if ( $query->param('branch') ) { |
1652 |
$branchcode = $query->param('branch'); |
1656 |
$branchcode = $query->param('branch'); |
1653 |
my $library = Koha::Libraries->find($branchcode); |
1657 |
my $library = Koha::Libraries->find($branchcode); |
1654 |
$branchname = $library? $library->branchname: ''; |
1658 |
$branchname = $library ? $library->branchname: ''; |
1655 |
} |
1659 |
} |
1656 |
my $branches = { map { $_->branchcode => $_->unblessed } Koha::Libraries->search->as_list }; |
1660 |
my $branches = { map { $_->branchcode => $_->unblessed } Koha::Libraries->search->as_list }; |
1657 |
foreach my $br ( keys %$branches ) { |
1661 |
foreach my $br ( keys %$branches ) { |
1658 |
|
1662 |
|
1659 |
# now we work with the treatment of ip |
1663 |
# now we work with the treatment of ip |
1660 |
my $domain = $branches->{$br}->{'branchip'}; |
1664 |
my $domain = $branches->{$br}->{'branchip'}; |
1661 |
if ( $domain && $ip =~ /^$domain/ ) { |
1665 |
next unless ($domain); |
|
|
1666 |
if ( in_iprange($domain) ) { |
1662 |
$branchcode = $branches->{$br}->{'branchcode'}; |
1667 |
$branchcode = $branches->{$br}->{'branchcode'}; |
1663 |
|
1668 |
|
1664 |
# new op dev : add the branchname to the cookie |
1669 |
# new op dev : add the branchname to the cookie |
1665 |
$branchname = $branches->{$br}->{'branchname'}; |
1670 |
$branchname = $branches->{$br}->{'branchname'}; |
1666 |
} |
1671 |
} |
1667 |
} |
1672 |
} |
1668 |
$session->param( 'number', $borrowernumber ); |
1673 |
$session->param( 'number', $borrowernumber ); |
Lines 2315-2328
Returns 1 if the remote address is in the provided iprange, or 0 otherwise.
Link Here
|
2315 |
|
2320 |
|
2316 |
sub in_iprange { |
2321 |
sub in_iprange { |
2317 |
my ($iprange) = @_; |
2322 |
my ($iprange) = @_; |
2318 |
my $result = 1; |
2323 |
return 1 unless $iprange; |
2319 |
my @allowedipranges = $iprange ? split(' ', $iprange) : (); |
2324 |
my $result = 0; |
2320 |
if (scalar @allowedipranges > 0) { |
2325 |
|
|
|
2326 |
my @allowedipranges = $iprange ? split( ' ', $iprange ) : (); |
2327 |
if (@allowedipranges) { |
2321 |
my @rangelist; |
2328 |
my @rangelist; |
2322 |
eval { @rangelist = Net::CIDR::range2cidr(@allowedipranges); }; return 0 if $@; |
2329 |
eval { @rangelist = Net::CIDR::range2cidr(@allowedipranges); }; |
2323 |
eval { $result = Net::CIDR::cidrlookup($ENV{'REMOTE_ADDR'}, @rangelist) } || Koha::Logger->get->warn('cidrlookup failed for ' . join(' ',@rangelist) ); |
2330 |
return 0 if $@; |
2324 |
} |
2331 |
eval { $result = Net::CIDR::cidrlookup( $ENV{'REMOTE_ADDR'}, @rangelist ) } |
2325 |
return $result ? 1 : 0; |
2332 |
|| Koha::Logger->get->warn( 'cidrlookup failed for ' . join( ' ', @rangelist ) ); |
|
|
2333 |
} |
2334 |
return $result ? 1 : 0; |
2326 |
} |
2335 |
} |
2327 |
|
2336 |
|
2328 |
sub getborrowernumber { |
2337 |
sub getborrowernumber { |