Files
webmin/file/list.cgi
2007-07-16 00:40:25 +00:00

48 lines
1.1 KiB
Perl
Executable File

#!/usr/local/bin/perl
# list.cgi
# Return a list of files in some directory
require './file-lib.pl';
&ReadParse();
&switch_acl_uid_and_chroot();
print "Content-type: text/plain\n\n";
$d = $in{'dir'} eq "/" ? "" : $in{'dir'};
if (!&can_list($in{'dir'})) {
print $text{'list_eaccess'},"\n";
}
elsif (!opendir(DIR, $in{'dir'})) {
# Cannot list the dir .. but maybe we don't have to!
# If a sub-directory was requested, just assume that it exists.
local $err = $!;
local @alt = &accessible_subdir($in{'dir'});
local $fil = &file_info_line($in{'dir'});
if (@alt && $fil) {
print "\n";
foreach $f ("$in{'dir'}/.", "$in{'dir'}/..", @alt) {
$fil = &file_info_line($f);
print "$fil\n" if (defined($fil));
}
}
else {
print "$err\n";
}
}
else {
# Can list the directory
print "\n";
@files = sort { lc($a) cmp lc($b) } readdir(DIR);
if ($hide_dot_files) {
@files = grep { $_ !~ /^\./ } @files;
}
else {
@files = grep { $_ ne "." && $_ ne ".." } @files;
}
@files = grep { &can_list("$d/$_") } @files;
closedir(DIR);
foreach $f (".", "..", @files) {
local $fil = &file_info_line("$d/$f");
print "$fil\n" if (defined($fil));
}
}