]> git.ipfire.org Git - ipfire-2.x.git/blame - src/scripts/captive-cleanup
captive portal: Reload firewall rules after cleanup
[ipfire-2.x.git] / src / scripts / captive-cleanup
CommitLineData
4d900227
AM
1#!/usr/bin/perl
2###############################################################################
3# #
4# IPFire.org - A linux based firewall #
5# Copyright (C) 2016 IPFire Team <alexander.marx@ipfire.org> #
6# #
7# This program is free software: you can redistribute it and/or modify #
8# it under the terms of the GNU General Public License as published by #
9# the Free Software Foundation, either version 3 of the License, or #
10# (at your option) any later version. #
11# #
12# This program is distributed in the hope that it will be useful, #
13# but WITHOUT ANY WARRANTY; without even the implied warranty of #
14# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #
15# GNU General Public License for more details. #
16# #
17# You should have received a copy of the GNU General Public License #
18# along with this program. If not, see <http://www.gnu.org/licenses/>. #
19# #
20###############################################################################
21
22use strict;
23
24require '/var/ipfire/general-functions.pl';
25
26my %settings=();
27my %clientshash=();
28my $settingsfile="${General::swroot}/captive/settings";
29my $clients="${General::swroot}/captive/clients";
30my $time;
31my $expiretime;
32
33if (-f $settingsfile && -f $clients && ! -z $clients){
34 &General::readhash("$settingsfile", \%settings) if(-f $settingsfile);
35 &General::readhasharray("$clients", \%clientshash);
36 $time = time();
37 foreach my $key (keys %clientshash) {
b1773d1a
MT
38 # Skip unlimited access lines
39 next if ($clientshash{$key}[3] == 0);
40
e01c5ab7 41 $expiretime=($clientshash{$key}[2])+$clientshash{$key}[3];
4d900227 42 if ($expiretime < $time){
07d56062
AM
43 delete $clientshash{$key};
44 my $exp = gmtime($expiretime);
45 &General::log("Captive", "Delete expired voucher $clientshash{$key}[4] expired on $exp. Remark: $clientshash{$key}[5]");
4d900227
AM
46 }
47 }
07d56062 48 &General::writehasharray("$clients", \%clientshash);
cb40ff60
MT
49
50 # Reload firewall rules
51 system("/usr/local/bin/captivectrl");
4d900227 52}