%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /usr/share/webmin/bacula-backup/
Upload File :
Create Path :
Current File : //usr/share/webmin/bacula-backup/list.cgi

#!/usr/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";
	}


Zerion Mini Shell 1.0