BUG12245: captive portal - clients are not automatically removed

With this patch the clients are updated and those who are expired get deleted from the hash.
In addition the table of active clients is now sorted.

Signed-off-by: Arne Fitzenreiter <arne_f@ipfire.org>
This commit is contained in:
Alexander Marx
2019-11-20 11:45:18 +01:00
committed by Arne Fitzenreiter
parent 1a23cf7324
commit 650aac182e

View File

@@ -514,6 +514,25 @@ END
}
}
sub cleanup_expired_coupons
{
my $acttime=time();
&General::readhasharray($clients, \%clientshash) if (-e $clients);
foreach my $key (keys %clientshash) {
#calculate endtime from clientshash
my $endtime;
if ($clientshash{$key}[3] > '0'){
$endtime = $clientshash{$key}[2]+$clientshash{$key}[3];
if ($acttime > $endtime) {
delete $clientshash{$key};
}
}
}
#write back hash
&General::writehasharray("$clients", \%clientshash);
}
sub show_coupons() {
&General::readhasharray($coupons, \%couponhash) if (-e $coupons);
@@ -601,9 +620,9 @@ sub show_clients() {
<th align='center' width='5%'>$Lang::tr{'delete'}</th>
</tr>
END
&cleanup_expired_coupons();
&General::readhasharray($clients, \%clientshash) if (-e $clients);
foreach my $key (keys %clientshash) {
foreach my $key (sort {$clientshash{$a}[2] <=> $clientshash{$b}[2]} keys %clientshash) {
#calculate time from clientshash (starttime)
my $starttime = sub{sprintf '%02d.%02d.%04d %02d:%02d', $_[3], $_[4]+1, $_[5]+1900, $_[2], $_[1] }->(localtime($clientshash{$key}[2]));