From: Alexander Marx Date: Wed, 20 Nov 2019 10:45:18 +0000 (+0100) Subject: BUG12245: captive portal - clients are not automatically removed X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=650aac182e0d0e7ef035c963780fbadc75aecc88;p=people%2Fms%2Fipfire-2.x.git 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 --- diff --git a/html/cgi-bin/captive.cgi b/html/cgi-bin/captive.cgi index b33287dd4c..8204eb7b3b 100755 --- a/html/cgi-bin/captive.cgi +++ b/html/cgi-bin/captive.cgi @@ -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() { $Lang::tr{'delete'} 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]));