Ahah, well, thanks to you and Some Random Fox (thanks, E), I think I pretty much got it working :o) I got rid of the file-extensions part 'cause the pss and viewsourse.php scripts were stupid, so now it's all in showtext.php (which I'll fix later)
Aaaannd...here's the code ^.^:
#!/usr/bin/perl
# RedFox! Productions: DirList
# All coding done by one Ranna Fox
use rfp;
use strict;
use CGI qw( :standard );
my $r = new rfp;
my $file = param('d') || "prefix/";
$r->print_start("RF!P::DL->($file);");
if ($file =~ /^\//) {
print "<b>Ahem...you may not list files with absolute paths. Especi
+ally not <em>that</em> absolute path</b>\n";
$r->print_end;
exit;
} elsif ($file =~ /\.\./) {
print "<b>'Scuse me, I won't list directories with .. in their path.
+ Better fix that.</b>\n";
$r->print_end;
exit;
} elsif (not $file =~ /^prefix\//) {
print "<b>See, the way things work is that if you're gonna list a di
+rectory, you gotta put a 'prefix/' before it, which means it has to b
+e in my directory.<b>\n";
$r->print_end;
exit;
}
my $filen;
($filen = $file) =~ s{^prefix/}{/home/admin/ranna/public_html/};
if (not -d $filen) {
print "<b>That...uh...doesn't appear to exist... o.O</b>\n";
$r->print_end;
exit;
}
&parse_dir($filen, $file);
sub parse_dir {
my $dir = $_[0];
my $req = $_[1];
opendir(PARSEDIR, "$dir") || die "Couldn't open directory $dir: $!\n
+";
my $currdir;
$dir =~ s/(.*)\/$/$1/;
($currdir = $dir) =~ s{.*/([^/]*)$}{$1};
print "<li><b>$currdir/</b>\n<ul>\n";
foreach my $file (readdir(PARSEDIR)) {
my $fullname = $dir . "/" . $file;
next if ($file =~ /^\..*/ || ! -r $fullname);
if (-d $fullname) {
$req = $req . "/" . $file;
&parse_dir($fullname, $req);
} else {
my $dirn;
($dirn = $dir) =~ s{/home/admin/ranna/public_html}{};
print "<li>[<a href=$dirn/$file>Bare link</a>]";
if (-T $fullname) {
print "[<a href=/showtext.php?file=prefix$dirn/$file>Online</a
+>]";
} else {
print "[<a href=$dirn/$file>Download</a>]";
}
print " - $file</li>\n";
}
}
closedir(PARSEDIR);
print "</ul>\n";
}
$r->print_end;
And, not to forget, an example.
-
Are you posting in the right place? Check out Where do I post X? to know for sure.
-
Posts may use any of the Perl Monks Approved HTML tags. Currently these include the following:
<code> <a> <b> <big>
<blockquote> <br /> <dd>
<dl> <dt> <em> <font>
<h1> <h2> <h3> <h4>
<h5> <h6> <hr /> <i>
<li> <nbsp> <ol> <p>
<small> <strike> <strong>
<sub> <sup> <table>
<td> <th> <tr> <tt>
<u> <ul>
-
Snippets of code should be wrapped in
<code> tags not
<pre> tags. In fact, <pre>
tags should generally be avoided. If they must
be used, extreme care should be
taken to ensure that their contents do not
have long lines (<70 chars), in order to prevent
horizontal scrolling (and possible janitor
intervention).
-
Want more info? How to link
or How to display code and escape characters
are good places to start.
|