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 Sesse::pr0n::Registry;
10 use Sesse::pr0n::Wizard;
12 package Sesse::pr0n::pr0n;
20 if ($uri eq '/' || $uri =~ /^\/\+tags\/?$/) {
21 return Sesse::pr0n::Listing::handler($r);
22 } elsif ($uri eq '/robots.txt' ||
23 $uri eq '/pr0n.css' ||
24 $uri eq '/skoyen.css' ||
25 $uri eq '/blah.png' ||
26 $uri eq '/faq.html' ||
27 $uri eq '/pr0n-fullscreen.css' ||
28 $uri eq '/pr0n-fullscreen-ie.css' ||
29 $uri eq '/pr0n-fullscreen.js' ||
30 $uri eq '/previous.png' ||
31 $uri eq '/next.png' ||
32 $uri eq '/close.png' ||
33 $uri eq '/wizard.js' ||
34 $uri eq '/wizard.css' ||
35 $uri eq '/pr0n.ico' ||
36 $uri =~ m#^/usage/([a-zA-Z0-9_.]+)$#) {
38 my $fname = Sesse::pr0n::Common::get_base($r) . 'files/' . $uri;
39 my (undef, undef, undef, undef, undef, undef, undef, $size, undef, $mtime) = stat($fname)
40 or error($r, "stat of $fname: $!");
42 $r->content_type(Sesse::pr0n::Common::get_mimetype_from_filename($uri));
43 $r->set_content_length($size);
44 $r->set_last_modified($mtime);
46 if((my $rc = $r->meets_conditions) != Apache2::Const::OK) {
50 $r->sendfile(Sesse::pr0n::Common::get_base($r) . 'files/' . $uri);
51 return Apache2::Const::OK;
52 } elsif ($uri eq '/newevent.html') {
53 $r->content_type('text/html; charset=utf-8');
54 $r->sendfile(Sesse::pr0n::Common::get_base($r) . "files/newevent.html");
55 return Apache2::Const::OK;
56 } elsif ($uri =~ m#^/webdav#) {
57 return Sesse::pr0n::WebDAV::handler($r);
58 } elsif ($uri =~ m#^/usage/([a-zA-Z0-9.-]+)$#) {
59 $r->sendfile(Sesse::pr0n::Common::get_base($r) . "usage/$1");
60 return Apache2::Const::OK;
61 } elsif ($uri =~ m#^/rotate$#) {
62 return Sesse::pr0n::Rotate::handler($r);
63 } elsif ($uri =~ m#^/select$#) {
64 return Sesse::pr0n::Select::handler($r);
65 } elsif ($uri =~ m#^/newevent$#) {
66 return Sesse::pr0n::NewEvent::handler($r);
67 } elsif ($uri =~ m#^/registry$#) {
68 return Sesse::pr0n::Registry::handler($r);
69 } elsif ($uri =~ m#^/wizard$#) {
70 return Sesse::pr0n::Wizard::handler($r);
71 } elsif ($uri =~ /^\/[a-zA-Z0-9-]+\/?$/ ||
72 $uri =~ /^\/\+all\/?$/ ||
73 $uri =~ /^\/\+tags\/[a-zA-Z0-9-]+\/?$/) {
74 return Sesse::pr0n::Index::handler($r);
75 } elsif ($uri =~ m#^/[a-zA-Z0-9-]+/(\d+x\d+/|original/)?(nobox/)?[a-zA-Z0-9._()-]+$#) {
76 return Sesse::pr0n::Image::handler($r);
80 Sesse::pr0n::Common::header($r, "404 File Not Found");
81 $r->print(" <p>The file you requested was not found.</p>");
82 Sesse::pr0n::Common::footer($r);
83 return Apache2::Const::OK;