diff -Nur -x '*.orig' -x '*.rej' e-smith-backup-1.15.0/root/etc/e-smith/web/functions/backup mezzanine_patched_e-smith-backup-1.15.0/root/etc/e-smith/web/functions/backup --- e-smith-backup-1.15.0/root/etc/e-smith/web/functions/backup 2007-09-11 16:18:01.000000000 -0400 +++ mezzanine_patched_e-smith-backup-1.15.0/root/etc/e-smith/web/functions/backup 2007-09-11 16:17:22.000000000 -0400 @@ -77,14 +77,6 @@ { performAndShowResult ($q); } -elsif ($q->param ('state') eq "desktop-restore") -{ - performDesktopRestore($q); -} -elsif ($q->param ('state') eq "desktop-verify") -{ - performDesktopVerify($q); -} elsif ($q->param ('state') eq "tape-configure") { updateTapeBackupConfig($q); @@ -231,8 +223,6 @@ my %labels = ( "desktop-backup" => $fm->localise('DESKTOP_BACKUP'), - "desktop-restore" => $fm->localise('DESKTOP_RESTORE'), - "desktop-verify" => $fm->localise('DESKTOP_VERIFY'), "tape-configure" => $fm->localise('TAPE_CONFIGURE'), "tape-restore" => $fm->localise('TAPE_RESTORE'), "workstn-configure" => $fm->localise('WORKSTN_CONFIGURE'), @@ -243,8 +233,6 @@ my @labels = ( 'desktop-backup', - 'desktop-restore', - 'desktop-verify', 'tape-configure', 'tape-restore', 'workstn-configure', @@ -420,14 +408,6 @@ { desktopBackup(); } - elsif ($function eq 'desktop-restore') - { - desktopRestore(); - } - elsif ($function eq 'desktop-verify') - { - desktopVerify(); - } elsif ($function eq 'tape-configure') { TapeBackupConfig ($q); @@ -546,317 +526,6 @@ $backup_rec->set_prop('Result', "0"); } -sub desktopRestore () -{ - my (undef, undef, $tmpfree, $halffree) = &CalculateSizes(); - - esmith::cgi::genHeaderNonCacheable ($q, undef, - $fm->localise('RESTORE_SERVER_CONFIG')); - - print $q->p ($fm->localise('DESKTOP_RESTORE_DESC')); - - my $freespace = eval 'return "'.$fm->localise('FREE_SPACE').'";'; - print $q->p($freespace); - - print $q->p ( - $q->b ($fm->localise('MUST_REBOOT_AFTER_RESTORE'))); - - print $q->start_multipart_form( - -method => 'POST', - -action => $q->url (-absolute => 1) - ); - - print $q->table ( - {border => 0, cellspacing => 0, cellpadding => 4}, - - esmith::cgi::genWidgetRow( - $q, - $fm->localise('FILE_TO_RESTORE'), - $q->filefield( - -name => 'backupFile', - -default => 'smeserver.tgz', - -size => 32 - ) - ), - ); - print $q->start_table ({width => "100%", -class => "sme-noborders"}); - print esmith::cgi::genButtonRow( - $q, - $q->submit( - -name => 'action', - -value => $fm->localise('RESTORE') - ) - ); - print $q->end_table,"\n"; - print $q->hidden( - -name => 'state', - -override => 1, - -default => 'desktop-restore' - ); - - print $q->endform; - - esmith::cgi::genFooter($fm); -} - -sub desktopVerify () -{ - my (undef, undef, $tmpfree, $halffree) = &CalculateSizes(); - - esmith::cgi::genHeaderNonCacheable ($q, undef, - $fm->localise('VERIFY_DESKTOP_BACKUP_FILE')); - - print $q->p ($fm->localise('VERIFY_BACKUP_DESC')); - - print $q->start_multipart_form( - -method => 'POST', - -action => $q->url (-absolute => 1) - ); - - print $q->table ( - {border => 0, cellspacing => 0, cellpadding => 4}, - - esmith::cgi::genWidgetRow( - $q, - $fm->localise('SELECT_BACKUP_FILE'), - $q->filefield( - -name => 'backupFile', - -default => 'smeserver.tgz', - -size => 32 - ) - )); - - print $q->table ({width => "100%", -class => "sme-noborders"}, - esmith::cgi::genButtonRow( - $q, - $q->submit( - -name => 'action', - -value => $fm->localise('VERIFY') - ) - )),"\n"; - - print $q->hidden( - -name => 'state', - -override => 1, - -default => 'desktop-verify' - ); - - print $q->endform; - - esmith::cgi::genFooter($fm); -} - -sub performDesktopRestore -{ - my ($q) = @_; - - # Need to validate this here: $q->param ('backupFile'); - my $lock_file = "/var/lock/subsys/e-smith-restore"; - my $file_handle = &esmith::lockfile::LockFileOrReturn($lock_file); - - unless ($file_handle) - { - esmith::cgi::genHeaderNonCacheable( - $q, - undef, $fm->localise('RESTORE_CANNOT_PROCEED') - ); - - print $q->p ( - $q->b ($fm->localise('ANOTHER_RESTORE_IN_PROGRESS') - ) - ); - - esmith::cgi::genFooter($fm); - return; - } - - my $rec = $restore->get('restore'); - $rec->set_prop('state','running'); - $rec->set_prop('start', time); - unless (system("/sbin/e-smith/signal-event", "pre-restore") == 0) - { - esmith::cgi::genHeaderNonCacheable( - $fm->{cgi}, - undef, $fm->localise('OPERATION_STATUS_REPORT')); - esmith::cgi::genResult( - $fm->{cgi}, $fm->localise('ERR_PRE_RESTORE')); - return; - } - - if (open(RD, "-|")) - { - - #---------------------------------------- - # restore system from uploaded backup file - #---------------------------------------- - - esmith::cgi::genHeaderNonCacheable ($q, undef, - $fm->localise('RESTORE_IN_PROGRESS')); - - print $q->p ( - $q->b ($fm->localise('RESTORE_IN_PROGRESS_DESC') - ) - ); - - print $q->p($fm->localise('FILES_HAVE_BEEN_RESTORED')); - - print ""; - my $message; - if (!close RD) - { - $message = $fm->localise('RESTORE_FAILED_MSG'); - } - else - { - #----------------------------------------------------- - # if restore completed, regenerate configuration files - #----------------------------------------------------- - if ($complete) - { - - $message = $fm->localise('RESTORE_COMPLETE'); - system("/usr/sbin/groupmod", "-g", "$www_gid", "www") == 0 - or warn ($fm->localise('ERR_RESTORING_GID')."\n"); - system("/usr/sbin/usermod", "-g", "$www_gid", "www") == 0 - or warn ($fm->localise('ERR_RESTORING_INITIAL_GRP')."\n"); - system("/sbin/e-smith/signal-event", "post-upgrade") == 0 - or die ($fm->localise('ERR_UPDATING_SYSCONF')."\n"); - } - else - { - $message = $fm->localise('RESTORE_FAILED'); - } - } - - $rec->set_prop('state', 'complete'); - $rec->set_prop('finish', time); - - &esmith::lockfile::UnlockFile($file_handle); - - print $q->p ($q->b ($message)); - - print $q->startform( - -method => 'POST', - -action => $q->url (-absolute => 1) - ); - print $q->p($q->b ($fm->localise('YOU_MUST_REBOOT'))),"\n"; - print $q->start_table ({width => "100%", -class => "sme-noborders"}),"\n"; - print esmith::cgi::genButtonRow( - $q, - $q->submit (-name => 'action', -value => - $fm->localise('REBOOT')) - ); - # Put in a hidden widget to store the reboot value. - print $q->hidden( - -name => 'function', - -value => 'reboot' - ),"\n"; - print $q->hidden ( - -name => 'state', - -override => 1, - -default => 'perform' - ),"\n"; - print $q->end_table,"\n"; - print $q->endform; - - esmith::cgi::genFooter($fm); - } - else - { - select(STDOUT); - $| = 1; - - my $backupFile = $q->param ('backupFile'); - - my $decodeCommand = ( $backupFile =~ /\.bak$/ ) ? - "|/usr/bin/uudecode -o /dev/stdout" : - "|/usr/bin/gzip -d"; - - open(WR, - $decodeCommand - . " | /bin/tar --directory / --extract --verbose --file=-" - ) || die ($fm->localise('COULD_NOT_EXEC_PIPELINE')."$!\n"); - - while (<$backupFile>) - { - print WR; - } - - close WR || die($fm->localise('COULD_NOT_DECODE')."$!\n"); - exit(0); - } - return; -} - -sub performDesktopVerify -{ - my ($q) = @_; - - if (open(RD, "-|")) - { - esmith::cgi::genHeaderNonCacheable ($q, - undef, $fm->localise("VERIFY_DESKTOP_BACKUP_FILE")); - - print $q->p($fm->localise('FILES_IN_BACKUP')); - - print ""; - my $status = close RD ? - ($complete ? - $fm->localise('VERIFY_COMPLETE') : - $fm->localise('BACKUP_FILE_INCOMPLETE')) - : $fm->localise('ERROR_READING_FILE'); - print $q->p ($q->b ($status)); - - esmith::cgi::genFooter($fm); - - } - else - { - select(STDOUT); - $| = 1; - - my $backupFile = $q->param ('backupFile'); - - my $decodeCommand = ( $backupFile =~ /\.bak$/ ) ? - "|/usr/bin/uudecode -o /dev/stdout" : - "|/usr/bin/gzip -d"; - - open(WR, - $decodeCommand - . " | /bin/tar --directory / --list --file=-" - ) || die ($fm->localise('COULD_NOT_DECODE')."$!\n"); - - while (<$backupFile>) - { - print WR; - } - - close WR; - exit 0; - } - - return; -} - sub TapeBackupConfig { my ($q) = @_;