X-Git-Url: https://git.sesse.net/?p=pr0n;a=blobdiff_plain;f=perl%2FSesse%2Fpr0n%2Fpr0n.pm;h=3c9161b94b1da8b117db489c8b4b6c6c89ae7736;hp=55e64de907e983be97ef2e4edb49e3be5cd07053;hb=6cd0332e10bb468ef5506be63b8a47f7c7e12fd9;hpb=437c5df6373cbf14cdaaa927655abe06f78b6d27 diff --git a/perl/Sesse/pr0n/pr0n.pm b/perl/Sesse/pr0n/pr0n.pm index 55e64de..3c9161b 100644 --- a/perl/Sesse/pr0n/pr0n.pm +++ b/perl/Sesse/pr0n/pr0n.pm @@ -4,10 +4,10 @@ use Sesse::pr0n::Index; use Sesse::pr0n::Image; use Sesse::pr0n::Rotate; use Sesse::pr0n::Select; -use Sesse::pr0n::WebDAV; use Sesse::pr0n::NewEvent; -use Sesse::pr0n::Registry; -use Sesse::pr0n::Wizard; +use Sesse::pr0n::Upload; +use Sesse::pr0n::UploadForm; +use IO::File::WithPath; package Sesse::pr0n::pr0n; use strict; @@ -16,68 +16,74 @@ use warnings; sub handler { my $r = shift; - my $uri = $r->uri; + my $uri = $r->path_info; if ($uri eq '/') { return Sesse::pr0n::Listing::handler($r); } elsif ($uri eq '/robots.txt' || $uri eq '/pr0n.css' || $uri eq '/skoyen.css' || - $uri eq '/blah.png' || $uri eq '/faq.html' || $uri eq '/pr0n-fullscreen.css' || + $uri eq '/pr0n-fullscreen-ie.css' || $uri eq '/pr0n-fullscreen.js' || $uri eq '/previous.png' || $uri eq '/next.png' || $uri eq '/close.png' || - $uri eq '/wizard.js' || - $uri eq '/wizard.css' || - $uri eq '/pr0n.ico' || + $uri eq '/options.png' || $uri =~ m#^/usage/([a-zA-Z0-9_.]+)$#) { $uri =~ s#^/##; - my $fname = Sesse::pr0n::Common::get_base($r) . 'files/' . $uri; + my $fname = $Sesse::pr0n::Config::image_base . 'files/' . $uri; my (undef, undef, undef, undef, undef, undef, undef, $size, undef, $mtime) = stat($fname) or error($r, "stat of $fname: $!"); - $r->content_type(Sesse::pr0n::Common::get_mimetype_from_filename($uri)); - $r->set_content_length($size); - $r->set_last_modified($mtime); + my $res = Plack::Response->new(200); + $res->content_type(Sesse::pr0n::Common::get_mimetype_from_filename($uri)); + $res->content_length($size); + Sesse::pr0n::Common::set_last_modified($res, $mtime); - if((my $rc = $r->meets_conditions) != Apache2::Const::OK) { - return $rc; - } + #if((my $rc = $r->meets_conditions) != Apache2::Const::OK) { + # return $rc; + #} - $r->sendfile(Sesse::pr0n::Common::get_base($r) . 'files/' . $uri); - return Apache2::Const::OK; + $res->content(IO::File::WithPath->new($Sesse::pr0n::Config::image_base . 'files/' . $uri)); + return $res; } elsif ($uri eq '/newevent.html') { - $r->content_type('text/html; charset=utf-8'); - $r->sendfile(Sesse::pr0n::Common::get_base($r) . "files/newevent.html"); - return Apache2::Const::OK; - } elsif ($uri =~ m#^/webdav#) { - return Sesse::pr0n::WebDAV::handler($r); + my $res = Plack::Response->new(200); + $res->content_type('text/html; charset=utf-8'); + $res->content(IO::File::WithPath->new($Sesse::pr0n::Config::image_base . 'files/newevent.html')); + return $res; } elsif ($uri =~ m#^/usage/([a-zA-Z0-9.-]+)$#) { - $r->sendfile(Sesse::pr0n::Common::get_base($r) . "usage/$1"); - return Apache2::Const::OK; + my $res = Plack::Response->new(200); + $res->content(IO::File::WithPath->new($Sesse::pr0n::Config::image_base . "usage/$1")); + return $res; } elsif ($uri =~ m#^/rotate$#) { return Sesse::pr0n::Rotate::handler($r); } elsif ($uri =~ m#^/select$#) { return Sesse::pr0n::Select::handler($r); } elsif ($uri =~ m#^/newevent$#) { return Sesse::pr0n::NewEvent::handler($r); - } elsif ($uri =~ m#^/registry$#) { - return Sesse::pr0n::Registry::handler($r); - } elsif ($uri =~ m#^/wizard$#) { - return Sesse::pr0n::Wizard::handler($r); - } elsif ($uri =~ m#^/[a-zA-Z0-9-]+/?$#) { + } elsif ($uri =~ /^\/upload\// && ($r->method eq 'OPTIONS' || $r->method eq 'PUT')) { + return Sesse::pr0n::Upload::handler($r); + } elsif ($uri =~ /^\/upload\/[a-zA-Z0-9-]+\/?$/) { + return Sesse::pr0n::UploadForm::handler($r); + } elsif ($uri =~ /^\/[a-zA-Z0-9-]+\/?$/ || + $uri =~ /^\/\+all\/?$/) { return Sesse::pr0n::Index::handler($r); - } elsif ($uri =~ m#^/[a-zA-Z0-9-]+/(\d+x\d+/|original/)?(nobox/)?[a-zA-Z0-9._-]+$#) { + } elsif ($uri =~ m#^/[a-zA-Z0-9-]+/ + (\d+x\d+ ( \@\d+(\.\d+)? )? / | original/ )? + ((?:no)?box/)? + [a-zA-Z0-9._()-]+$#x) { return Sesse::pr0n::Image::handler($r); } - $r->status(404); - Sesse::pr0n::Common::header($r, "404 File Not Found"); - $r->print("

The file you requested was not found.

"); - Sesse::pr0n::Common::footer($r); - return Apache2::Const::OK; + my $res = Plack::Response->new(404); + my $io = IO::String->new; + Sesse::pr0n::Common::header($r, $io, "404 File Not Found"); + $io->print("

The file you requested was not found.

"); + Sesse::pr0n::Common::footer($r, $io); + $io->setpos(0); + $res->body($io); + return $res; } 1;