# HG changeset patch # User Heiko Schlittermann (JUMPER) # Date 1329485313 -3600 # Node ID 35e487d91ad944b43c35db42e66dbb08e77d6ca4 # Parent d1d25ca0be3fd58d026998ebf7b1be8ae89596c0 do not know what this is... diff -r d1d25ca0be3f -r 35e487d91ad9 tt2/admin --- a/tt2/admin Fri May 27 17:11:58 2011 +0200 +++ b/tt2/admin Fri Feb 17 14:28:33 2012 +0100 @@ -5,6 +5,17 @@
[ home]
+

Ansicht [%view ? view : "[unbekannt]"%]

+ +
+ + + +
+ [%INCLUDE footer%] + diff -r d1d25ca0be3f -r 35e487d91ad9 upload.pl --- a/upload.pl Fri May 27 17:11:58 2011 +0200 +++ b/upload.pl Fri Feb 17 14:28:33 2012 +0100 @@ -24,7 +24,7 @@ use strict; use warnings; use Cwd qw(abs_path); -use CGI qw(:all *table); +use CGI qw(:cgi); use CGI::Carp qw(fatalsToBrowser); use CGI::Pretty; use File::Basename; @@ -36,7 +36,9 @@ my $DIR = "d/{view}"; my $DIR_URI = "./$DIR"; -sub human($); +sub _human($); +sub _upload($$); +sub _get_files($$); delete @ENV{ grep /PATH/, keys %ENV }; $ENV{PATH} = "/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin"; @@ -71,7 +73,7 @@ # # delete is simple - # + # if (param("op") eq "rm") { param("id") =~ /([-a-z\d]+-\d+)/i; @@ -93,6 +95,8 @@ or die Template->error(); print header(-charset => "UTF-8"); $tt->process("admin" => { + view => $ENV{REMOTE_USER}, + alink => "?op=admin", }) or die $tt->error; exit 0; } @@ -101,44 +105,64 @@ # it is an upload # - if (length(my $file = param("upload"))) { - my $days = param("expires"); - my $expires; - tie my $uuid => "OSSP::uuid::tie", "v4"; - - # sanitize expires - $days =~ /.*?(\d+).*/; - $days = defined $1 ? $1 : 10; - $expires = time + $days * 86400; - - # sanitizing the filename - (my $filename = $file) =~ tr /\\/\//; - $filename =~ /(.*)/; - $filename = $1; - - my $dir = "$DIR/$uuid-$expires"; - mkdir $dir, 0750 or die "Can't mkdir $dir: $!\n"; - open(my $outfh, ">" => "$dir/$filename") - or die "Can't create $dir/$filename: $!\n"; - print {$outfh} <$file>; - - if (open(my $atfh, "|-" => "at now + $days days")) { - print {$atfh} - "rm -f \"$dir/$filename\"\n", - "rmdir \"$dir\"\n"; - close $atfh; - } + if (length(param("upload"))) { + _upload(param("upload"), param("expires")); } - # - # now check for existing files + my @files = _get_files($DIR, $DIR_URI); + + # + # the rest uses some templates # + my $tt = Template->new(%TT2_CONFIG) or die Template->error(); + print header(-charset => "UTF-8"); + $tt->process("overview" => { + alink => "?op=admin", + view => $ENV{REMOTE_USER}, + directory => "$DIR | " . path_info() . " | " . url(-path => 0), + sel => { 7 => "selected" }, + files => \@files, + }) or die $tt->error; + exit 0; +} + +sub _upload($$) { + my ($file, $days) = @_; + my $expires; + tie my $uuid => "OSSP::uuid::tie", "v4"; + + # sanitize expires + $days =~ /.*?(\d+).*/; + $days = defined $1 ? $1 : 10; + $expires = time + $days * 86400; + + # sanitizing the filename + (my $filename = $file) =~ tr /\\/\//; + $filename =~ /(.*)/; + $filename = $1; + + my $dir = "$DIR/$uuid-$expires"; + mkdir $dir, 0750 or die "Can't mkdir $dir: $!\n"; + open(my $outfh, ">" => "$dir/$filename") + or die "Can't create $dir/$filename: $!\n"; + print {$outfh} <$file>; + + if (open(my $atfh, "|-" => "at now + $days days")) { + print {$atfh} + "rm -f \"$dir/$filename\"\n", + "rmdir \"$dir\"\n"; + close $atfh; + } +} + +sub _get_files($$) { + my ($base, $base_uri) = @_; + my @files; - foreach (map { /(.*)/ } sort { -M $a <=> -M $b } glob "$DIR/*-*/*") { + foreach (map { /(.*)/ } sort { -M $a <=> -M $b } glob "$base/*-*/*") { my ($file, $dir) = fileparse($_); $dir = basename $dir; - # $dir =~ /(?\S+)-(?\d+)$/ or next; $dir =~ /(\S+)-(\d+)$/ or next; my $hash = $1; my $expires = $2; @@ -150,32 +174,19 @@ } push @files, { - link => "$DIR_URI/$dir/$file", + link => "$base_uri/$dir/$file", name => $file, - size => human((stat $_)[7]), + size => _human((stat $_)[7]), mtime => (stat $_)[9], dtime => $expires, dlink => "?op=rm&id=$dir", } } - - # - # the rest uses some templates - # - my $tt = Template->new(%TT2_CONFIG) or die Template->error(); - print header(-charset => "UTF-8"); - $tt->process("overview" => { - alink => "?op=admin", - view => $ENV{REMOTE_USER}, - directory => $DIR, - sel => { 7 => "selected" }, - files => \@files, - }) or die $tt->error; - exit 0; + return @files; } -sub human($) { +sub _human($) { my $_ = shift; my @units = qw(B K M G T); while (length int > 3 and @units) {