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; |