The main author of Bweb is Eric Bollengier.
The main author of Bacula is Kern Sibbald, with contributions from
many others, a complete list can be found in the file AUTHORS.
-
This program is Free Software; you can redistribute it and/or
- modify it under the terms of version two of the GNU General Public
- License as published by the Free Software Foundation plus additions
- that are listed in the file LICENSE.
+ modify it under the terms of version three of the GNU Affero General Public
+ License as published by the Free Software Foundation and included
+ in the file LICENSE.
This program is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- General Public License for more details.
+ Affero General Public License for more details.
- You should have received a copy of the GNU General Public License
+ You should have received a copy of the GNU Affero General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
02110-1301, USA.
Bacula® is a registered trademark of Kern Sibbald.
The licensor of Bacula is the Free Software Foundation Europe
- (FSFE), Fiduciary Program, Sumatrastrasse 25, 8006 Zurich,
+ (FSFE), Fiduciary Program, Sumatrastrasse 25, 8006 Zürich,
Switzerland, email:ftf@fsfeurope.org.
=head1 VERSION
(SELECT $pathid AS PathId, '.' AS Path))";
my $sq2 = "
-SELECT tmp.PathId, tmp.Path, Lstat, JobId
+SELECT tmp.PathId, tmp.Path, LStat, JobId
FROM $sq1 AS tmp LEFT JOIN ( -- get attributes if any
- SELECT File1.PathId, File1.JobId, File1.Lstat FROM File AS File1
+ SELECT File1.PathId, File1.JobId, File1.LStat FROM File AS File1
WHERE File1.FilenameId = $dir_filenameid
AND File1.JobId IN ($jobclause)) AS listfile1
ON (tmp.PathId = listfile1.PathId)
# Then we get all the dir entries from File ...
my $query = "
-SELECT PathId, Path, JobId, Lstat FROM (
+SELECT PathId, Path, JobId, LStat FROM (
SELECT Path1.PathId, Path1.Path, lower(Path1.Path),
- listfile1.JobId, listfile1.Lstat
+ listfile1.JobId, listfile1.LStat
FROM (
SELECT DISTINCT brestore_pathhierarchy1.PathId
FROM brestore_pathhierarchy AS brestore_pathhierarchy1
ON (brestore_pathhierarchy1.PathId = brestore_pathvisibility1.PathId)
WHERE brestore_pathhierarchy1.PPathId = $pathid
AND brestore_pathvisibility1.jobid IN ($jobclause)
- $limit
+ $filter
) AS listpath1
JOIN Path AS Path1 ON (listpath1.PathId = Path1.PathId)
LEFT JOIN ( -- get attributes if any
- SELECT File1.PathId, File1.JobId, File1.Lstat FROM File AS File1
+ SELECT File1.PathId, File1.JobId, File1.LStat FROM File AS File1
WHERE File1.FilenameId = $dir_filenameid
AND File1.JobId IN ($jobclause)) AS listfile1
ON (listpath1.PathId = listfile1.PathId)
my @versions;
my $query;
$query =
-"SELECT File.JobId, File.FileId, File.Lstat,
+"SELECT File.JobId, File.FileId, File.LStat,
File.Md5, Media.VolumeName, Media.InChanger
FROM File, Job, Client, JobMedia, Media
WHERE File.FilenameId = $fileid
FROM File WHERE FileId IN ($fileid))";
}
- # using this is not good because the sql engine doesn't know
- # what LIKE will use. It will be better to get Path% in perl
- # but it doesn't work with accents... :(
foreach my $dirid (@dirid) {
- push @union, "
+ my $p = $bvfs->get_path($dirid);
+ $p =~ s/([%_\\])/\\$1/g; # Escape % and _ for LIKE search
+ $p = $bvfs->dbh_quote($p);
+ push @union, "
(SELECT File.JobId, File.FileIndex, File.FilenameId, File.PathId $FileId
FROM Path JOIN File USING (PathId)
- WHERE Path.Path LIKE
- (SELECT ". $bvfs->dbh_strcat('Path',"'\%'") ." FROM Path
- WHERE PathId = $dirid
- )
+ WHERE Path.Path LIKE " . $bvfs->dbh_strcat($p, "'%'") . "
AND File.JobId IN ($inclause))";
}
print CGI::redirect("bweb.pl?action=dsp_cur_job;jobid=$jobid") ;
exit 0;
}
-
sub escape_quote
{
my ($str) = @_;
+ my %esc = (
+ "\n" => '\n',
+ "\r" => '\r',
+ "\t" => '\t',
+ "\f" => '\f',
+ "\b" => '\b',
+ "\"" => '\"',
+ "\\" => '\\\\',
+ "\'" => '\\\'',
+ );
+
if (!$str) {
return '';
}
- $str =~ s/'/\\'/g;
+
+ $str =~ s/([\x22\x5c\n\r\t\f\b])/$esc{$1}/g;
+ $str =~ s/\//\\\//g;
+ $str =~ s/([\x00-\x08\x0b\x0e-\x1f])/'\\u00' . unpack('H2', $1)/eg;
return $str;
}
0, # filenameid
$_->[0], # pathid
"'$jids'", # jobid
- "'" . escape_quote($_->[1]) . "'", # name
+ '"' . escape_quote($_->[1]) . '"', # name
"'" . $p[7] . "'", # size
- "'" . strftime('%Y-%m-%d %H:%m:%S', localtime($p[11])) . "'") .
+ "'" . strftime('%Y-%m-%d %H:%m:%S', localtime($p[11]||0)) . "'") .
']';
} @$files);
-
print "," if (@$files);
$files = $bvfs->ls_dirs();
0, # filenameid
$_->[0], # pathid
"'$jids'", # jobid
- "'" . escape_quote($_->[1]) . "'", # name
+ '"' . escape_quote($_->[1]) . '"', # name
"'" . $p[7] . "'", # size
- "'" . strftime('%Y-%m-%d %H:%m:%S', localtime($p[11])) . "'") .
+ "'" . strftime('%Y-%m-%d %H:%m:%S', localtime($p[11]||0)) . "'") .
']';
} @$files);
$_->[0],
$pathid,
$_->[4],
- "'" . escape_quote($_->[2]) . "'",
+ '"' . escape_quote($_->[2]) . '"', # name
"'" . $p[7] . "'",
"'" . strftime('%Y-%m-%d %H:%m:%S', localtime($p[11])) . "'") .
']';
$_->[0],
$pathid,
$_->[4],
- "'" . escape_quote($_->[2]) . "'",
+ '"' . escape_quote($_->[2]) . '"', # name
"'" . $p[7] . "'",
"'" . strftime('%Y-%m-%d %H:%m:%S', localtime($p[11])) . "'") .
']';
}
if ($table) {
- #$bvfs->dbh_do("DROP TABLE $table");
+ $bvfs->dbh_do("DROP TABLE $table");
}
}