X-Git-Url: https://git.sesse.net/?p=pr0n;a=blobdiff_plain;f=perl%2FSesse%2Fpr0n%2Fpr0n.pm;h=0372c46bb7416d7b17b4561dccbd64283530e2cb;hp=28df8719a04ecebabfbe8283ae7e89de6622e7e9;hb=060aaacf0d15a03ed7287cf81169f630a1a1f95b;hpb=ee8749f2650af3b1fcfdc627d4ee8bea9a3435b2 diff --git a/perl/Sesse/pr0n/pr0n.pm b/perl/Sesse/pr0n/pr0n.pm index 28df871..0372c46 100644 --- a/perl/Sesse/pr0n/pr0n.pm +++ b/perl/Sesse/pr0n/pr0n.pm @@ -15,7 +15,7 @@ sub handler { my $r = shift; my $uri = $r->uri; - if ($uri eq '/') { + if ($uri eq '/' || $uri =~ /^\/\+tags\/?$/) { return Sesse::pr0n::Listing::handler($r); } elsif ($uri eq '/robots.txt' || $uri eq '/pr0n.css' || @@ -23,13 +23,28 @@ sub handler { $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 =~ m#^/usage/([a-zA-Z0-9_.]+)$#) { $uri =~ s#^/##; + my $fname = Sesse::pr0n::Common::get_base($r) . '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); + + 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; } elsif ($uri eq '/newevent.html') { @@ -47,9 +62,11 @@ sub handler { return Sesse::pr0n::Select::handler($r); } elsif ($uri =~ m#^/newevent$#) { return Sesse::pr0n::NewEvent::handler($r); - } elsif ($uri =~ m#^/[a-zA-Z0-9-]+/?$#) { + } elsif ($uri =~ /^\/[a-zA-Z0-9-]+\/?$/ || + $uri =~ /^\/\+all\/?$/ || + $uri =~ /^\/\+tags\/[a-zA-Z0-9-]+\/?$/) { 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+/|original/)?((?:no)?box/)?[a-zA-Z0-9._()-]+$#) { return Sesse::pr0n::Image::handler($r); }