diff --git a/minecraft/edit_backup.cgi b/minecraft/edit_backup.cgi new file mode 100755 index 000000000..da8a28fa2 --- /dev/null +++ b/minecraft/edit_backup.cgi @@ -0,0 +1,54 @@ +#!/usr/local/bin/perl +# Show a form for setting up scheduled backups + +use strict; +use warnings; +require './minecraft-lib.pl'; +&foreign_require("webmincron"); +our (%in, %text, %config); + +&ui_print_header(undef, $text{'backup_title'}, ""); + +print $text{'backup_desc'},"
\n";
+
+print &ui_form_start("save_backup.cgi", "post");
+print &ui_table_start($text{'backup_header'}, undef, 2);
+
+# Backup enabled
+my $job = &get_backup_job();
+print &ui_table_row($text{'backup_enabled'},
+ &ui_yesno_radio("enabled", $job ? 1 : 0));
+
+# Schedule
+print &ui_table_row($text{'backup_sched'},
+ &webmincron::show_times_input(
+ $job || { 'mins' => 0,
+ 'hours' => 0,
+ 'days' => '*',
+ 'months' => '*',
+ 'weekdays' => '*' }, 0));
+
+# Destination directory
+print &ui_table_row($text{'backup_dir'},
+ &ui_textbox("dir", $config{'backup_dir'}, 50));
+
+# Worlds to include
+my @worlds = &list_worlds();
+print &ui_table_row($text{'backup_worlds'},
+ &ui_radio("worlds_def", $config{'backup_worlds'} ? 0 : 1,
+ [ [ 1, $text{'backup_worlds1'} ],
+ [ 0, $text{'backup_worlds0'} ] ])."
\n".
+ &ui_select("worlds", [ split(/\s+/, $config{'backup_worlds'}) ],
+ [ map { $_->{'name'} } @worlds ], 5, 1, 1));
+
+# Send backup report to
+print &ui_table_row($text{'backup_email'},
+ &ui_opt_textbox("email", $config{'backup_email'}, 40,
+ $text{'backup_noemail'}, $text{'backup_emailto'})."
\n".
+ &ui_checkbox("email_err", 1, $text{'backup_email_err'},
+ $config{'backup_email_err'} ? 1 : 0));
+
+print &ui_table_end();
+print &ui_form_end([ [ undef, $text{'save'} ] ]);
+
+&ui_print_footer("", $text{'index_return'});
diff --git a/minecraft/save_backup.cgi b/minecraft/save_backup.cgi
new file mode 100755
index 000000000..cf743bfce
--- /dev/null
+++ b/minecraft/save_backup.cgi
@@ -0,0 +1,49 @@
+#!/usr/local/bin/perl
+# Enable or disable scheduled backups
+
+use strict;
+use warnings;
+require './minecraft-lib.pl';
+&foreign_require("webmincron");
+our (%in, %text, %config, $module_config_file, $module_name);
+&ReadParse();
+&error_setup($text{'backup_err'});
+
+my $job = &get_backup_job();
+if (!$in{'enabled'}) {
+ # Delete scheduled job, if any
+ if ($job) {
+ &webmincron::delete_webmin_cron($job);
+ }
+ &webmin_log("disable", "backup");
+ }
+else {
+ # Validate inputs
+ $job ||= { 'module' => $module_name,
+ 'func' => 'backup_worlds' };
+ &webmincron::parse_times_input($job, \%in);
+ $in{'dir'} =~ /^\// || &error($text{'backup_edir'});
+ $config{'backup_dir'} = $in{'dir'};
+ if ($in{'worlds_def'}) {
+ $config{'backup_worlds'} = '';
+ }
+ else {
+ $in{'worlds'} || &error($text{'backup_eworlds'});
+ $config{'backup_worlds'} =
+ join(' ', split(/\0/, $in{'worlds'}));
+ }
+ if ($in{'email_def'}) {
+ $config{'backup_email'} = '';
+ }
+ else {
+ $in{'email'} =~ /^\S+\@\S+$/ || &error($text{'backup_eemail'});
+ $config{'backup_email'} = $in{'email'};
+ $config{'backup_email_err'} = $in{'email_err'};
+ }
+ &lock_file($module_config_file);
+ &save_module_config();
+ &unlock_file($module_config_file);
+ &webmincron::save_webmin_cron($job);
+ &webmin_log("enable", "backup", $in{'backup_dir'});
+ }
+&redirect("");