1 use Sesse::pr0n::Common;
2 use Sesse::pr0n::Listing;
3 use Sesse::pr0n::Index;
4 use Sesse::pr0n::Image;
5 use Sesse::pr0n::Rotate;
6 use Sesse::pr0n::Select;
7 use Sesse::pr0n::WebDAV;
8 use Sesse::pr0n::NewEvent;
9 use IO::File::WithPath;
11 package Sesse::pr0n::pr0n;
18 my $uri = $r->path_info;
20 return Sesse::pr0n::Listing::handler($r);
21 } elsif ($uri eq '/robots.txt' ||
22 $uri eq '/pr0n.css' ||
23 $uri eq '/skoyen.css' ||
24 $uri eq '/faq.html' ||
25 $uri eq '/pr0n-fullscreen.css' ||
26 $uri eq '/pr0n-fullscreen-ie.css' ||
27 $uri eq '/pr0n-fullscreen.js' ||
28 $uri eq '/previous.png' ||
29 $uri eq '/next.png' ||
30 $uri eq '/close.png' ||
31 $uri eq '/options.png' ||
32 $uri =~ m#^/usage/([a-zA-Z0-9_.]+)$#) {
34 my $fname = $Sesse::pr0n::Config::image_base . 'files/' . $uri;
35 my (undef, undef, undef, undef, undef, undef, undef, $size, undef, $mtime) = stat($fname)
36 or error($r, "stat of $fname: $!");
38 my $res = Plack::Response->new(200);
39 $res->content_type(Sesse::pr0n::Common::get_mimetype_from_filename($uri));
40 $res->content_length($size);
41 Sesse::pr0n::Common::set_last_modified($res, $mtime);
43 #if((my $rc = $r->meets_conditions) != Apache2::Const::OK) {
47 $res->content(IO::File::WithPath->new($Sesse::pr0n::Config::image_base . 'files/' . $uri));
49 } elsif ($uri eq '/newevent.html') {
50 my $res = Plack::Response->new(200);
51 $res->content_type('text/html; charset=utf-8');
52 $res->content(IO::File::WithPath->new($Sesse::pr0n::Config::image_base . 'files/newevent.html'));
54 } elsif ($uri =~ m#^/webdav#) {
55 return Sesse::pr0n::WebDAV::handler($r);
56 } elsif ($uri =~ m#^/usage/([a-zA-Z0-9.-]+)$#) {
57 my $res = Plack::Response->new(200);
58 $res->content(IO::File::WithPath->new($Sesse::pr0n::Config::image_base . "usage/$1"));
60 } elsif ($uri =~ m#^/rotate$#) {
61 return Sesse::pr0n::Rotate::handler($r);
62 } elsif ($uri =~ m#^/select$#) {
63 return Sesse::pr0n::Select::handler($r);
64 } elsif ($uri =~ m#^/newevent$#) {
65 return Sesse::pr0n::NewEvent::handler($r);
66 } elsif ($uri =~ /^\/[a-zA-Z0-9-]+\/?$/ ||
67 $uri =~ /^\/\+all\/?$/) {
68 return Sesse::pr0n::Index::handler($r);
69 } elsif ($uri =~ m#^/[a-zA-Z0-9-]+/
70 (\d+x\d+ ( \@\d+(\.\d+)? )? / | original/ )?
72 [a-zA-Z0-9._()-]+$#x) {
73 return Sesse::pr0n::Image::handler($r);
76 my $res = Plack::Response->new(404);
77 my $io = IO::String->new;
78 Sesse::pr0n::Common::header($r, $io, "404 File Not Found");
79 $io->print(" <p>The file you requested was not found.</p>");
80 Sesse::pr0n::Common::footer($r, $io);