#!/usr/bin/perl use strict; use URI; my $dirc = 'none'; my $HtmlBase = "/usr/lib/apache/htdocs"; my ($rq, $rf, $prevDir, $nextDir, $newLocation); my ($basedir, $subdir, $file, $TheDir, $host); my (@dirs, @pathsegs); $rq = URI->new($ENV{"REQUEST_URI"}); $dirc = $rq->query; $rf = URI->new($ENV{"HTTP_REFERER"}); $host = $rf->host; $subdir = $rf->path; @pathsegs = $rf->path_segments; $file = $pathsegs[-1]; $subdir = $pathsegs[-2]; $basedir = join('/', @pathsegs[0..$#pathsegs-2]); opendir(DIRHNDL, "$HtmlBase/$basedir"); while($TheDir = readdir(DIRHNDL)) { if($TheDir =~ /^\w/ && -d "$HtmlBase/$basedir/$TheDir") { push @dirs, $TheDir; } } @dirs = sort @dirs; for(my $i = 0; $i <= $#dirs; $i++) { if ($dirs[$i] eq $subdir) { if($i > 0) { $prevDir = $dirs[$i - 1] } else { $prevDir = $subdir } if($i < $#dirs) { $nextDir = $dirs[$i + 1] } else { $nextDir = $subdir } last; } } if($dirc eq 'prev') { if(-f "$HtmlBase/$basedir/$prevDir/$file") { $newLocation = "http://$host$basedir/$prevDir/$file"; } else { $newLocation = "http://$host$basedir/$subdir/$file"; } } elsif ($dirc eq 'next') { if(-f "$HtmlBase/$basedir/$nextDir/$file") { $newLocation = "http://$host$basedir/$nextDir/$file"; } else { $newLocation = "http://$host$basedir/$subdir/$file"; } } elsif ($dirc eq 'index') { if($file eq 'index.html') { $newLocation = "http://$host$basedir/index.html"; } else { $newLocation = "http://$host$basedir/$subdir/index.html"; } } else { $newLocation = $ENV{"HTTP_REFERER"}; } print "Location:$newLocation\n\n";