mirror of
https://github.com/webmin/webmin.git
synced 2026-02-07 07:52:13 +00:00
104 lines
2.4 KiB
Perl
Executable File
104 lines
2.4 KiB
Perl
Executable File
#!/usr/local/bin/perl
|
|
# Returns a list of files and directories under some directory
|
|
|
|
$trust_unknown_referers = 1;
|
|
require './bacula-backup-lib.pl';
|
|
&ReadParse();
|
|
print "Content-type: text/plain\n\n";
|
|
|
|
# Get the parent directory ID
|
|
$dbh = &connect_to_database();
|
|
$cmd = $dbh->prepare("select PathId from Path where Path = ?");
|
|
$d = $in{'dir'} eq "/" ? "/" : $in{'dir'}."/";
|
|
$wind = &unix_to_dos($d);
|
|
$cmd->execute($wind);
|
|
($pid) = $cmd->fetchrow();
|
|
$cmd->finish();
|
|
|
|
if ($in{'job'} ne "") {
|
|
$jobsql = "and Job.JobId = $in{'job'}";
|
|
}
|
|
|
|
if ($in{'volume'}) {
|
|
# Search just within one volume
|
|
# Subdirectories of directory, that are on this volume
|
|
$cmd1 = $dbh->prepare("
|
|
select Path.Path
|
|
from Path, File, Job, JobMedia, Media
|
|
where File.PathId = Path.PathId
|
|
and File.JobId = Job.JobId
|
|
and Job.JobId = JobMedia.JobId
|
|
and JobMedia.MediaId = Media.MediaId
|
|
and Media.VolumeName = ?
|
|
$jobsql
|
|
");
|
|
$cmd1->execute($in{'volume'}) || die "db error : ".$dbh->errstr;
|
|
while(($f) = $cmd1->fetchrow()) {
|
|
$f = &dos_to_unix($f);
|
|
if ($f =~ /^(\Q$d\E[^\/]+\/)/) {
|
|
push(@rv, $1);
|
|
}
|
|
}
|
|
$cmd1->finish();
|
|
|
|
# Files in directory, that are on this volume
|
|
$cmd2 = $dbh->prepare("
|
|
select Filename.Name
|
|
from File, Filename, Job, JobMedia, Media
|
|
where File.FilenameId = Filename.FilenameId
|
|
and File.PathId = ?
|
|
and File.JobId = Job.JobId
|
|
and Job.JobId = JobMedia.JobId
|
|
and JobMedia.MediaId = Media.MediaId
|
|
and Media.VolumeName = ?
|
|
$jobsql
|
|
");
|
|
$cmd2->execute($pid, $in{'volume'}) || die "db error : ".$dbh->errstr;
|
|
while(($f) = $cmd2->fetchrow()) {
|
|
push(@rv, "$d$f") if ($f =~ /\S/);
|
|
}
|
|
$cmd2->finish();
|
|
}
|
|
else {
|
|
# Search all files
|
|
# Subdirectories of directory
|
|
$cmd1 = $dbh->prepare("
|
|
select Path
|
|
from Path, File, Job
|
|
where File.PathId = Path.PathId
|
|
and File.JobId = Job.JobId
|
|
$jobsql
|
|
");
|
|
$cmd1->execute() || die "db error : ".$dbh->errstr;
|
|
while(($f) = $cmd1->fetchrow()) {
|
|
$f = &dos_to_unix($f);
|
|
if ($f =~ /^(\Q$d\E[^\/]+\/)/) {
|
|
push(@rv, $1);
|
|
}
|
|
}
|
|
$cmd1->finish();
|
|
|
|
# Files in directory
|
|
$cmd2 = $dbh->prepare("
|
|
select Filename.Name
|
|
from File, Filename, Job
|
|
where File.FilenameId = Filename.FilenameId
|
|
and File.PathId = ?
|
|
and File.JobId = Job.JobId
|
|
$jobsql
|
|
");
|
|
$cmd2->execute($pid) || die "db error : ".$dbh->errstr;
|
|
while(($f) = $cmd2->fetchrow()) {
|
|
push(@rv, "$d$f") if ($f =~ /\S/);
|
|
}
|
|
$cmd2->finish();
|
|
}
|
|
|
|
# Return output
|
|
@rv = &unique(@rv);
|
|
print "\n";
|
|
foreach $f (@rv) {
|
|
print $f,"\n";
|
|
}
|
|
|