2023-04-30 17:15:42 +02:00
|
|
|
#!/usr/bin/env perl
|
|
|
|
#
|
2023-05-08 19:05:52 +02:00
|
|
|
# Copyright (c) 2023 Mischa Peters <mischa @ openbsd.amsterdam>
|
|
|
|
#
|
|
|
|
# Permission to use, copy, modify, and distribute this software for any
|
|
|
|
# purpose with or without fee is hereby granted, provided that the above
|
|
|
|
# copyright notice and this permission notice appear in all copies.
|
|
|
|
#
|
|
|
|
# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
|
|
|
# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
|
|
|
# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
|
|
|
# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
|
|
|
# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
|
|
|
# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
|
|
|
# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
|
|
|
#
|
2023-04-30 17:15:42 +02:00
|
|
|
use 5.024;
|
|
|
|
use strict;
|
|
|
|
use warnings;
|
|
|
|
use autodie;
|
|
|
|
use Fcntl qw(:flock);
|
|
|
|
use File::Basename;
|
|
|
|
use File::stat;
|
|
|
|
use POSIX qw(strftime);
|
|
|
|
|
|
|
|
my $ttl = "300";
|
|
|
|
my $workdir = dirname($0);
|
|
|
|
|
|
|
|
opendir my $dh, "${workdir}/tokens";
|
|
|
|
while (my $file = readdir $dh) {
|
|
|
|
chomp $file;
|
|
|
|
next if $file =~ /^\./;
|
|
|
|
|
|
|
|
open my $fh, '<', "${workdir}/tokens/$file";
|
|
|
|
my $client_ip = <$fh>;
|
|
|
|
chomp $client_ip;
|
|
|
|
close $fh;
|
|
|
|
|
|
|
|
my $mtime = stat("${workdir}/tokens/${file}")->mtime();
|
|
|
|
if ((time() - $mtime) > $ttl) {
|
|
|
|
_log("$client_ip $file removed");
|
|
|
|
unlink("${workdir}/tokens/${file}");
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
sub _log {
|
|
|
|
my ($msg) = @_;
|
|
|
|
open my $fh, '>>', '/var/log/ptrd.log';
|
|
|
|
flock $fh, LOCK_EX;
|
|
|
|
print $fh sprintf("%s %s: %s \n", strftime("%b %d %H:%M:%S", localtime), basename($0), $msg);
|
|
|
|
close $fh;
|
|
|
|
}
|