Add a new 2304x1728 resolution (twice 1152x864), for fitting better into 30-inch...
[pr0n] / perl / Sesse / pr0n / pr0n.pm
index 5bd49286e0b83bddb4dba8f9fa396399fed26508..0372c46bb7416d7b17b4561dccbd64283530e2cb 100644 (file)
@@ -15,21 +15,41 @@ 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' ||
                 $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 =~ 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->sendfile(Sesse::pr0n::Common::get_base($r) . $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') {
                $r->content_type('text/html; charset=utf-8');
-               $r->sendfile(Sesse::pr0n::Common::get_base($r) . "newevent.html");
+               $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);
@@ -42,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+/)?(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);
        }