mirror of
https://github.com/webmin/webmin.git
synced 2026-02-03 14:13:29 +00:00
Set useful environment variables for pre and post scripts https://forum.virtualmin.com/t/backup-command-to-run-after-backup-script-problem/115454/22
This commit is contained in:
@@ -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";
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user