]> git.ipfire.org Git - ipfire-2.x.git/commitdiff
BUG12245: captive portal - clients are not automatically removed
authorAlexander Marx <alexander.marx@ipfire.org>
Wed, 20 Nov 2019 10:45:18 +0000 (11:45 +0100)
committerArne Fitzenreiter <arne_f@ipfire.org>
Sat, 30 Nov 2019 09:53:04 +0000 (09:53 +0000)
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>
html/cgi-bin/captive.cgi

index b33287dd4c8c134b69e9fe08a41105ed27c6fa58..8204eb7b3b87e7dc0e5079513564913eea876917 100755 (executable)
@@ -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]));