#
#========================================================================
#
-# Version 2.1.0, released 20 Jun 2004.
+# Version 3.0.0beta2, released 11 Nov 2006.
#
# See http://backuppc.sourceforge.net.
#
use BackupPC::CGI::Lib qw(:all);
use Data::Dumper;
use File::Path;
+use Encode;
sub action
{
$hiddenStr .= <<EOF;
<input type="hidden" name="fcb$i" value="$In{'fcb' . $i}">
EOF
+ $name = decode_utf8($name);
$fileListStr .= <<EOF;
<li> ${EscHTML($name)}
EOF
#
# Tell the user what options they have
#
+ $pathHdr = decode_utf8($pathHdr);
$content .= eval("qq{$Lang->{Restore_Options_for__host2}}");
- #
- # If there is a single host, make sure direct restore is enabled
- #
if ( @hosts == 1 ) {
#
# Pick up the host's config file
#
$bpc->ConfigRead($hosts[0]);
%Conf = $bpc->Conf();
+ }
- #
- # Decide if option 1 (direct restore) is available based
- # on whether the restore command is set.
- #
- my $cmd = $Conf{XferMethod} eq "smb" ? $Conf{SmbClientRestoreCmd}
- : $Conf{XferMethod} eq "tar" ? $Conf{TarClientRestoreCmd}
- : $Conf{XferMethod} eq "archive" ? undef
- : $Conf{RsyncRestoreArgs};
- if ( defined($cmd) ) {
- $content .= eval(
- "qq{$Lang->{Restore_Options_for__host_Option1}}");
- } else {
- my $hostDest = $hosts[0];
- $content .= eval(
- "qq{$Lang->{Restore_Options_for__host_Option1_disabled}}");
- }
- } else {
- $content .= eval("qq{$Lang->{Restore_Options_for__host_Option1}}");
- }
+ #
+ # Decide if option 1 (direct restore) is available based
+ # on whether the restore command is set.
+ #
+ my $cmd = $Conf{XferMethod} eq "smb" ? $Conf{SmbClientRestoreCmd}
+ : $Conf{XferMethod} eq "tar" ? $Conf{TarClientRestoreCmd}
+ : $Conf{XferMethod} eq "archive" ? undef
+ : $Conf{RsyncRestoreArgs};
+ if ( defined($cmd) ) {
+ $content .= eval(
+ "qq{$Lang->{Restore_Options_for__host_Option1}}");
+ } else {
+ my $hostDest = $hosts[0];
+ $content .= eval(
+ "qq{$Lang->{Restore_Options_for__host_Option1_disabled}}");
+ }
#
# Verify that Archive::Zip is available before showing the
(my $strippedShareDest = $In{shareDest}) =~ s/^\///;
substr($targetFile, 0, length($pathHdr)) = "/$In{pathHdr}/";
$targetFile =~ s{//+}{/}g;
+ $strippedShareDest = decode_utf8($strippedShareDest);
+ $targetFile = decode_utf8($targetFile);
+ $strippedShare = decode_utf8($strippedShare);
+ $f = decode_utf8($f);
$fileListStr .= <<EOF;
<tr><td>$host:/$strippedShare$f</td><td>$In{hostDest}:/$strippedShareDest$targetFile</td></tr>
EOF
}
+ $In{shareDest} = decode_utf8($In{shareDest});
+ $In{pathHdr} = decode_utf8($In{pathHdr});
my $content = eval("qq{$Lang->{Are_you_sure}}");
Header(eval("qq{$Lang->{Restore_Confirm_on__host}}"), $content);
Trailer();
$dump->Indent(1);
mkpath("$TopDir/pc/$hostDest", 0, 0777)
if ( !-d "$TopDir/pc/$hostDest" );
- if ( open(REQ, ">$TopDir/pc/$hostDest/$reqFileName") ) {
+ my $openPath = "$TopDir/pc/$hostDest/$reqFileName";
+ if ( open(REQ, ">", $openPath) ) {
binmode(REQ);
print(REQ $dump->Dump);
close(REQ);
} else {
- ErrorExit(eval("qq{$Lang->{Can_t_open_create}}"));
+ ErrorExit(eval("qq{$Lang->{Can_t_open_create__openPath}}"));
}
$reply = $bpc->ServerMesg("restore ${EscURI($ipAddr)}"
. " ${EscURI($hostDest)} $User $reqFileName");