forked from webmin/webmin
-
Notifications
You must be signed in to change notification settings - Fork 0
/
backup.pl
executable file
·84 lines (77 loc) · 2.07 KB
/
backup.pl
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
#!/usr/local/bin/perl
# Execute a backup on schedule
use strict;
use warnings;
our (%text, %config, $no_acl_check);
$no_acl_check++;
require './backup-config-lib.pl';
&foreign_require("mailboxes", "mailboxes-lib.pl");
# Get the backup
my $backup = &get_backup($ARGV[0]);
$backup || die "Failed to find backup $ARGV[0]";
# Run the pre-backup command, if any
my $err;
my $premsg = "";
if ($backup->{'pre'} =~ /\S/) {
my $preout = &backquote_command("($backup->{'pre'}) 2>&1 </dev/null");
$premsg = &text('email_pre', $backup->{'pre'})."\n".
$preout."\n";
if ($?) {
$err = $text{'email_prefailed'};
}
}
# Do it
my @mods = split(/\s+/, $backup->{'mods'});
my $size;
if (!$err) {
$err = &execute_backup(\@mods, $backup->{'dest'}, \$size, undef,
$backup->{'configfile'}, $backup->{'nofiles'},
[ split(/\t+/, $backup->{'others'}) ]);
}
# Run the post-backup command, if any
my $postmsg = "";
if (!$err && $backup->{'post'} =~ /\S/) {
my $postout = &backquote_command("($backup->{'post'}) 2>&1 </dev/null");
$postmsg = "\n".
&text('email_post', $backup->{'post'})."\n".
$postout."\n";
}
# Send off the results
if (($err || $backup->{'emode'} == 0) && $backup->{'email'}) {
my $mlist;
foreach my $m (@mods) {
my %minfo = &get_module_info($m);
$mlist .= " $minfo{'desc'}\n";
}
my $host = &get_system_hostname();
my $nice = &nice_dest($backup->{'dest'}, 1);
$nice =~ s/<[^>]+>//g;
my $msg;
my $subject;
if ($err) {
$err =~ s/<[^>]+>//g;
$msg = $premsg.
$text{'email_mods'}."\n".
$mlist.
"\n".
&text('email_failed', $nice)."\n\n".
" $err\n";
$subject = &text('email_sfailed', $host);
}
else {
$msg = $premsg.
$text{'email_mods'}."\n".
$mlist.
"\n".
&text('email_ok', $nice)."\n".
&text('email_final', &nice_size($size))."\n".
$postmsg;
$subject = &text('email_sok', $host);
}
&mailboxes::send_text_mail($config{'from_addr'} ||
&mailboxes::get_from_address(),
$backup->{'email'},
undef,
$subject,
$msg);
}