upload.pl
changeset 1 2f299c7ef0c9
parent 0 6d8dea55365a
child 3 8b499dbf38ca
equal deleted inserted replaced
0:6d8dea55365a 1:2f299c7ef0c9
    15 use IO::File;
    15 use IO::File;
    16 use File::Basename;
    16 use File::Basename;
    17 use Digest::SHA1 qw(sha1_hex);
    17 use Digest::SHA1 qw(sha1_hex);
    18 
    18 
    19 my $DIR = "upload.d";
    19 my $DIR = "upload.d";
    20 my $LINK_DIR = url(-base => 1) . dirname($ENV{SCRIPT_NAME}) . "/$DIR";
    20 my $LINK_DIR = dirname($ENV{SCRIPT_NAME}) . "$DIR";
    21 
    21 
    22 -d $DIR
    22 -d $DIR
    23   or mkdir $DIR => 0750
    23   or mkdir $DIR => 0750
    24   or die "Can't mkdir $DIR: $!\n";
    24   or die "Can't mkdir $DIR: $!\n";
    25 
    25 
    56           or die "Can't create $dir/$filename: $!\n";
    56           or die "Can't create $dir/$filename: $!\n";
    57         print {$outfh} <$file>;
    57         print {$outfh} <$file>;
    58     }
    58     }
    59     print hr;
    59     print hr;
    60 
    60 
       
    61     print p <<__;
       
    62 	Der gültige Download-Link ist die Link-Adresse, die sich hinter
       
    63 	dem Datei-Namen verbirgt. (Firefox: Rechte Maustaste, Link-Location).
       
    64 __
       
    65 
    61     print start_table, Tr(th { align => "left" }, [qw/name size date expires/]);
    66     print start_table, Tr(th { align => "left" }, [qw/name size date expires/]);
    62 
    67 
    63     foreach (map { /(.*)/ } sort { -M $a <=> -M $b } glob "$DIR/*-*/*") {
    68     foreach (map { /(.*)/ } sort { -M $a <=> -M $b } glob "$DIR/*-*/*") {
    64         my ($file, $dir) = fileparse($_);
    69         my ($file, $dir) = fileparse($_);
    65         $dir = basename $dir;
    70         $dir = basename $dir;
    66         $dir =~ /(?<hash>\S+)-(?<expires>\d+)$/ or next;
    71         # $dir =~ /(?<hash>\S+)-(?<expires>\d+)$/ or next;
    67         if ($+{expires} <= time) {
    72         $dir =~ /(\S+)-(\d+)$/ or next;
       
    73 	my $hash = $1;
       
    74 	my $expires = $2;
       
    75         if (${expires} <= time) {
    68             /(.*)/;
    76             /(.*)/;
    69             unlink $_  or die "Can't unlik $_: $!\n";
    77             unlink $_  or die "Can't unlik $_: $!\n";
    70             rmdir $dir or die "Can't rmdir $dir: $!\n";
    78             rmdir $dir or die "Can't rmdir $dir: $!\n";
    71             next;
    79             next;
    72         }
    80         }
    73 
    81 
    74         print Tr(
    82         print Tr(
    75             td(a { href => "$LINK_DIR/$dir/$file" }, $file),
    83             td(a { href => "$LINK_DIR/$dir/$file" }, $file),
    76             td({ align => "right" }, (stat $_)[7]),
    84             td({ align => "right" }, (stat $_)[7]),
    77             td(scalar localtime +(stat $_)[9]),
    85             td(scalar localtime +(stat $_)[9]),
    78             td(scalar localtime $+{expires}),
    86             td(scalar localtime ${expires}),
    79             td(a({ href => "?delete=$dir" }, "remove"))
    87             td(a({ href => "?delete=$dir" }, "remove"))
    80         );
    88         );
    81     }
    89     }
    82 
    90 
    83     print end_table, hr;
    91     print end_table, hr;