#!/usr/bin/perl # Create, update or delete a scheduled backup use strict; use warnings; no warnings 'redefine'; no warnings 'uninitialized'; require './backup-config-lib.pl'; our (%in, %text, $cron_cmd, $module_name); &ReadParse(); # Find the backup job my ($job, $backup); if (!$in{'new'}) { $backup = &get_backup($in{'id'}); $job = &find_cron_job($backup); } else { $backup = { }; } if ($in{'delete'}) { # Delete the backup &delete_backup($backup); if ($job) { &lock_file(&cron::cron_file($job)); &cron::delete_cron_job($job); &unlock_file(&cron::cron_file($job)); } } else { # Validate inputs &error_setup($text{'save_err'}); my @mods = split(/\0/, $in{'mods'}); $backup->{'mods'} = join(" ", @mods); $backup->{'dest'} = &parse_backup_destination("dest", \%in); &cron::parse_times_input($backup, \%in); $backup->{'emode'} = $in{'emode'}; $backup->{'email'} = $in{'email'}; $backup->{'pre'} = $in{'pre'}; $backup->{'post'} = $in{'post'}; $backup->{'sched'} = $in{'sched'}; ($backup->{'configfile'}, $backup->{'nofiles'}, $backup->{'others'}) = &parse_backup_what("what", \%in); @mods || ($backup->{'nofiles'} && !$backup->{'configfile'}) || &error($text{'save_emods'}); # Save or create &save_backup($backup); if ($job) { &lock_file(&cron::cron_file($job)); &cron::delete_cron_job($job); } if ($in{'sched'}) { &cron::create_wrapper($cron_cmd, $module_name, "backup.pl"); $job = { 'user' => 'root', 'command' => "$cron_cmd $backup->{'id'}", 'active' => 1, 'mins' => $backup->{'mins'}, 'hours' => $backup->{'hours'}, 'days' => $backup->{'days'}, 'months' => $backup->{'months'}, 'weekdays' => $backup->{'weekdays'}, 'special' => $backup->{'special'} }; &lock_file(&cron::cron_file($job)); &cron::create_cron_job($job); } &unlock_file(&cron::cron_file($job)) if ($job); } &webmin_log($in{'new'} ? 'create' : $in{'delete'} ? 'delete' : 'modify', 'backup', $backup->{'dest'}, $backup); if ($in{'run'}) { # Execute the backup now &ui_print_unbuffered_header(undef, $text{'run_title'}, ""); # Run the pre-backup command, if any my $err; if ($backup->{'pre'} =~ /\S/) { my $preout = &backquote_command( "($backup->{'pre'}) 2>&1 </dev/null"); print &text('email_pre', "<tt>".&html_escape($backup->{'pre'})."</tt>")."<br>\n". "<pre>".&html_escape($preout)."</pre>\n"; if ($?) { $err = $text{'email_prefailed'}; } } my @mods = split(/\s+/, $backup->{'mods'}); my $nice = &nice_dest($backup->{'dest'}, 1); if (!$err) { print &text('run_doing', scalar(@mods), "<tt>$nice</tt>"),"<br>\n"; my $size; $err = &execute_backup( \@mods, $backup->{'dest'}, \$size, undef, $backup->{'configfile'}, $backup->{'nofiles'}, [ split(/\t+/, $backup->{'others'}) ]); } if ($err) { print "<pre>$err</pre>"; print "$text{'run_failed'}<p>\n"; } else { print "$text{'run_ok'}<p>\n"; } # Run the post-backup command, if any if (!$err && $backup->{'post'} =~ /\S/) { my $postout = &backquote_command( "($backup->{'post'}) 2>&1 </dev/null"); print &text('email_post', "<tt>".&html_escape($backup->{'post'})."</tt>")."<br>\n". "<pre>".&html_escape($postout)."</pre>\n"; } &webmin_log("run", "backup", $backup->{'dest'}, $backup); &ui_print_footer("edit.cgi?id=$in{'id'}", $text{'edit_return'}, "index.cgi?mode=sched", $text{'index_return'}); } else { &redirect("index.cgi?mode=sched"); }
Name | Type | Size | Permission | Actions |
---|---|---|---|---|
help | Folder | 0755 |
|
|
images | Folder | 0755 |
|
|
lang | Folder | 0755 |
|
|
CHANGELOG | File | 1.59 KB | 0644 |
|
backup-config-lib.pl | File | 19.49 KB | 0755 |
|
backup.cgi | File | 1.88 KB | 0755 |
|
backup.pl | File | 2.11 KB | 0755 |
|
cgi_args.pl | File | 284 B | 0755 |
|
config | File | 34 B | 0644 |
|
config-syno-linux | File | 111 B | 0644 |
|
config.info | File | 223 B | 0644 |
|
config.info.ar | File | 326 B | 0644 |
|
config.info.ca | File | 256 B | 0644 |
|
config.info.cs | File | 137 B | 0644 |
|
config.info.de | File | 204 B | 0644 |
|
config.info.es | File | 175 B | 0644 |
|
config.info.fr | File | 171 B | 0644 |
|
config.info.hr | File | 0 B | 0644 |
|
config.info.hu | File | 166 B | 0644 |
|
config.info.it | File | 188 B | 0644 |
|
config.info.ja | File | 181 B | 0644 |
|
config.info.ko | File | 164 B | 0644 |
|
config.info.ms | File | 228 B | 0644 |
|
config.info.nl | File | 231 B | 0644 |
|
config.info.no | File | 248 B | 0644 |
|
config.info.pl | File | 252 B | 0644 |
|
config.info.ru | File | 292 B | 0644 |
|
config.info.sk | File | 139 B | 0644 |
|
config.info.sv | File | 0 B | 0644 |
|
config.info.tr | File | 174 B | 0644 |
|
edit.cgi | File | 2.66 KB | 0755 |
|
index.cgi | File | 3.34 KB | 0755 |
|
log_parser.pl | File | 730 B | 0755 |
|
module.info | File | 210 B | 0644 |
|
module.info.af | File | 0 B | 0644 |
|
module.info.af.auto | File | 166 B | 0644 |
|
module.info.ar | File | 224 B | 0644 |
|
module.info.be | File | 0 B | 0644 |
|
module.info.be.auto | File | 303 B | 0644 |
|
module.info.bg | File | 0 B | 0644 |
|
module.info.bg.auto | File | 303 B | 0644 |
|
module.info.ca | File | 194 B | 0644 |
|
module.info.cs | File | 42 B | 0644 |
|
module.info.cs.auto | File | 131 B | 0644 |
|
module.info.da | File | 0 B | 0644 |
|
module.info.da.auto | File | 180 B | 0644 |
|
module.info.de | File | 125 B | 0644 |
|
module.info.el | File | 0 B | 0644 |
|
module.info.el.auto | File | 368 B | 0644 |
|
module.info.es | File | 48 B | 0644 |
|
module.info.es.auto | File | 145 B | 0644 |
|
module.info.eu | File | 0 B | 0644 |
|
module.info.eu.auto | File | 176 B | 0644 |
|
module.info.fa | File | 0 B | 0644 |
|
module.info.fa.auto | File | 272 B | 0644 |
|
module.info.fi | File | 0 B | 0644 |
|
module.info.fi.auto | File | 168 B | 0644 |
|
module.info.fr | File | 50 B | 0644 |
|
module.info.fr.auto | File | 146 B | 0644 |
|
module.info.he | File | 0 B | 0644 |
|
module.info.he.auto | File | 196 B | 0644 |
|
module.info.hr | File | 0 B | 0644 |
|
module.info.hr.auto | File | 180 B | 0644 |
|
module.info.hu | File | 32 B | 0644 |
|
module.info.hu.auto | File | 152 B | 0644 |
|
module.info.it | File | 42 B | 0644 |
|
module.info.it.auto | File | 117 B | 0644 |
|
module.info.ja | File | 48 B | 0644 |
|
module.info.ja.auto | File | 172 B | 0644 |
|
module.info.ko | File | 29 B | 0644 |
|
module.info.ko.auto | File | 124 B | 0644 |
|
module.info.lt | File | 0 B | 0644 |
|
module.info.lt.auto | File | 195 B | 0644 |
|
module.info.lv | File | 0 B | 0644 |
|
module.info.lv.auto | File | 171 B | 0644 |
|
module.info.ms | File | 158 B | 0644 |
|
module.info.mt | File | 0 B | 0644 |
|
module.info.mt.auto | File | 169 B | 0644 |
|
module.info.nl | File | 34 B | 0644 |
|
module.info.nl.auto | File | 131 B | 0644 |
|
module.info.no | File | 38 B | 0644 |
|
module.info.no.auto | File | 135 B | 0644 |
|
module.info.pl | File | 181 B | 0644 |
|
module.info.pt | File | 0 B | 0644 |
|
module.info.pt.auto | File | 170 B | 0644 |
|
module.info.pt_BR | File | 0 B | 0644 |
|
module.info.pt_BR.auto | File | 176 B | 0644 |
|
module.info.ro | File | 0 B | 0644 |
|
module.info.ro.auto | File | 179 B | 0644 |
|
module.info.ru | File | 96 B | 0644 |
|
module.info.ru.auto | File | 244 B | 0644 |
|
module.info.sk | File | 42 B | 0644 |
|
module.info.sk.auto | File | 133 B | 0644 |
|
module.info.sl | File | 0 B | 0644 |
|
module.info.sl.auto | File | 182 B | 0644 |
|
module.info.sv | File | 38 B | 0644 |
|
module.info.sv.auto | File | 140 B | 0644 |
|
module.info.th | File | 0 B | 0644 |
|
module.info.th.auto | File | 341 B | 0644 |
|
module.info.tr | File | 45 B | 0644 |
|
module.info.tr.auto | File | 162 B | 0644 |
|
module.info.uk | File | 0 B | 0644 |
|
module.info.uk.auto | File | 302 B | 0644 |
|
module.info.ur | File | 0 B | 0644 |
|
module.info.ur.auto | File | 220 B | 0644 |
|
module.info.vi | File | 0 B | 0644 |
|
module.info.vi.auto | File | 200 B | 0644 |
|
module.info.zh | File | 99 B | 0644 |
|
module.info.zh_TW | File | 0 B | 0644 |
|
module.info.zh_TW.auto | File | 124 B | 0644 |
|
restore.cgi | File | 1.55 KB | 0755 |
|
save.cgi | File | 3.38 KB | 0755 |
|
uninstall.pl | File | 321 B | 0755 |
|