diff --git a/http/index.cgi b/http/index.cgi index e0dba37..ec2d208 100755 --- a/http/index.cgi +++ b/http/index.cgi @@ -40,10 +40,9 @@ print " - star me + star me

Terminal usage

-

I recommend using lainsafecli to upload files to lainsafe, however, there is more than one way to do it.

+

I recommend using clainsafecli to upload files to lainsafe, however, there is more than one way to do it.

curl -F 'file=@1605388889.png' $ENV{HTTP_HOST}$ENV{REQUEST_URI}
-print $disk_free . available from . $disk_size . total; "; diff --git a/http/upload.cgi b/http/upload.cgi index ea64472..b194818 100755 --- a/http/upload.cgi +++ b/http/upload.cgi @@ -20,6 +20,7 @@ use Time::HiRes qw(gettimeofday); my $q = CGI->new; my $filename = $q->param('file'); +my $url = $q->param('url'); my $upload_dir = "files/"; print $q->header(); @@ -30,55 +31,75 @@ $size = $ENV{CONTENT_LENGTH}; our $MAX_SIZE = 1024*1024*100; # Change for your size our $MAX_SIZE_MB = $MAX_SIZE / 1024 / 1024; # Don't change this + our @not_allowed_extensions = qw(sh out exe); +# do something better +if ($url ne "") { + goto url_shorter; +} + if ($filename eq "" || $ENV{REQUEST_METHOD} eq "GET") { - print("What are you looking for?"); - exit; + print("What are you looking for?"); + exit; } -if ($size > $MAX_SIZE) { - print("Max size for a file is $MAX_SIZE_MB MBs"); - exit; -} +if ($filename) { + if ($size > $MAX_SIZE) { + print("Max size for a file is $MAX_SIZE_MB MBs"); + exit; + } -my @chars = ("A"..."z","a"..."z"); -my $dirname; -my $extension = $filename; + my @chars = ("A"..."z","a"..."z"); + my $dirname; + my $extension = $filename; -$dirname .= $chars[rand @chars] for 1..8; -$extension =~ s/.*\.//; -$filename .= ".notcgi" if $extension eq "cgi"; + $dirname .= $chars[rand @chars] for 1..8; + $extension =~ s/.*\.//; + $filename .= ".notcgi" if $extension eq "cgi"; -mkdir("$upload_dir/$dirname"); -my $upload_filehandle = $q->upload("file"); + mkdir("$upload_dir/$dirname"); + my $upload_filehandle = $q->upload("file"); -# onion urls will be http -my $prot = length $ENV{HTTPS} ? "https" : "http"; + # onion urls will be http + my $prot = length $ENV{HTTPS} ? "https" : "http"; -my $allowed_extension = 1; + my $allowed_extension = 1; -foreach (@not_allowed_extensions) { - if ($filename =~ /\.$_$/i) { - $allowed_extension = 0; - last; - } + foreach (@not_allowed_extensions) { + if ($filename =~ /\.$_$/i) { + $allowed_extension = 0; + last; + } -} + } -if ($allowed_extension) { + if ($allowed_extension) { - open(FILE,">$upload_dir/$dirname/$filename"); - binmode(FILE); + open(FILE,">$upload_dir/$dirname/$filename"); + binmode(FILE); - while (<$upload_filehandle>) { - print FILE; - } + while (<$upload_filehandle>) { + print FILE; + } - close FILE; - $filename =~ s/ /%20/g; - print $prot. "://" . $ENV{HTTP_HOST} . "/$upload_dir$dirname/$filename"; -} else { - print "The file extension .$extension is not allowed in this instance."; + close FILE; + $filename =~ s/ /%20/g; + print $prot. "://" . $ENV{HTTP_HOST} . "/$upload_dir$dirname/$filename"; + } else { + print "The file extension .$extension is not allowed in this instance."; + } + exit; +} elsif ($url != "" && !$filename) { + url_shorter: + my $template = ""; + + my @chars = ("A"..."z","a"..."z"); + my $dirname; + $dirname .= $chars[rand @chars] for 1..8; + mkdir($dirname); + open(my $fh, ">$dirname/index.html"); + print $fh $template; + exit; }