From 9cf786e000cd0724ed64ee64eaef46c60b93be64 Mon Sep 17 00:00:00 2001 From: Jamie Cameron Date: Sun, 6 Jul 2014 08:30:31 -0700 Subject: [PATCH] Add missing CGIs --- minecraft/edit_backup.cgi | 54 +++++++++++++++++++++++++++++++++++++++ minecraft/save_backup.cgi | 49 +++++++++++++++++++++++++++++++++++ 2 files changed, 103 insertions(+) create mode 100755 minecraft/edit_backup.cgi create mode 100755 minecraft/save_backup.cgi 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("");