This commit is contained in:
Jamie Cameron
2022-06-18 23:55:27 -07:00
parent b5ce93bcac
commit e81916651b
2 changed files with 34 additions and 8 deletions

View File

@@ -74,6 +74,7 @@ else {
if ($status{'status'} eq 'complete' || $dump->{'afteraok'}) {
# Execute the post-backup script
$dump{'status'} = $status{'status'};
$bok = &execute_after($dump, OUT, 0);
if (!$bok && !$dump->{'afterfok'}) {
print OUT "\n$text{'email_eafter'}\n";

View File

@@ -126,33 +126,58 @@ return $rv;
# or 0 on failure
sub execute_before
{
if ($_[0]->{'before'}) {
local $h = $_[1];
&open_execute_command(before, "($_[0]->{'before'}) 2>&1 </dev/null", 1);
my ($dump, $h, $esc) = @_;
if ($dump->{'before'}) {
&set_dump_envs($dump);
&open_execute_command(before, "($dump->{'before'}) 2>&1 </dev/null", 1);
while(<before>) {
print $h $_[2] ? &html_escape($_) : $_;
print $h $esc ? &html_escape($_) : $_;
}
close(before);
&reset_dump_envs();
return !$?;
}
return 1;
}
# execute_after(&dump, handle, escape)
# Executes the before-dump command, and prints the output. Returns 1 on success
# or 0 on failure
sub execute_after
{
if ($_[0]->{'after'}) {
local $h = $_[1];
&open_execute_command(after, "($_[0]->{'after'}) 2>&1 </dev/null", 1);
my ($dump, $h, $esc) = @_;
if ($dump->{'after'}) {
&set_dump_envs($dump);
&open_execute_command(after, "($dump->{'after'}) 2>&1 </dev/null", 1);
while(<after>) {
print $h $_[2] ? &html_escape($_) : $_;
print $h $esc ? &html_escape($_) : $_;
}
close(after);
&reset_dump_envs();
return !$?;
}
return 1;
}
# set_dump_envs(&dump)
# Sets FSDUMP_ environment variables based on attributes of the dump
sub set_dump_envs
{
my ($dump) = @_;
foreach my $k (keys %$dump) {
$ENV{'FSDUMP_'.uc($k)} = $dump->{$k};
}
}
# reset_dump_envs()
# Clear all variables set by set_dump_envs
sub reset_dump_envs
{
foreach my $k (keys %ENV) {
delete($ENV{$k}) if ($k =~ /^FSDUMP_/);
}
}
# running_dumps(&procs)
# Returns a list of backup jobs currently in progress, and their statuses
sub running_dumps