|
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 { |