X-Git-Url: http://git.rot13.org/?p=BackupPC.git;a=blobdiff_plain;f=lib%2FBackupPC%2FCGI%2FView.pm;h=00edfcd78bcd2057a8367a964ab314c9da2e1207;hp=fc99fee50a68f1fd5879561181acc59341aaa950;hb=f9796d809e6a7d4ed2c356f0f32f1a3d628d3d1f;hpb=5c6a6cc4f333ce44a9df62ab828b0b9341579f7c diff --git a/lib/BackupPC/CGI/View.pm b/lib/BackupPC/CGI/View.pm index fc99fee..00edfcd 100644 --- a/lib/BackupPC/CGI/View.pm +++ b/lib/BackupPC/CGI/View.pm @@ -10,7 +10,7 @@ # Craig Barratt # # COPYRIGHT -# Copyright (C) 2003 Craig Barratt +# Copyright (C) 2003-2009 Craig Barratt # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -28,7 +28,7 @@ # #======================================================================== # -# Version 2.1.0beta1, released 9 Apr 2004. +# Version 3.2.0, released 31 Jul 2010. # # See http://backuppc.sourceforge.net. # @@ -78,26 +78,29 @@ sub action } elsif ( $type eq "ArchiveErr" ) { $file = "$TopDir/pc/$host/ArchiveLOG$ext"; $comment = $Lang->{Extracting_only_Errors}; - } elsif ( $host ne "" && $type eq "config" ) { - $file = "$TopDir/pc/$host/config.pl"; - $file = "$TopDir/conf/$host.pl" - if ( $host ne "config" && -f "$TopDir/conf/$host.pl" - && !-f $file ); - } elsif ( $type eq "docs" ) { - $file = "$BinDir/../doc/BackupPC.html"; } elsif ( $type eq "config" ) { - $file = "$TopDir/conf/config.pl"; + # Note: only works for Storage::Text + $file = $bpc->{storage}->ConfigPath($host); } elsif ( $type eq "hosts" ) { - $file = "$TopDir/conf/hosts"; + # Note: only works for Storage::Text + $file = $bpc->ConfDir() . "/hosts"; $linkHosts = 1; + } elsif ( $type eq "docs" ) { + $file = $bpc->InstallDir() . "/doc/BackupPC.html"; } elsif ( $host ne "" ) { - $file = "$TopDir/pc/$host/LOG$ext"; + if ( !defined($In{num}) ) { + # get the latest LOG file + $file = ($bpc->sortedPCLogFiles($host))[0]; + $file =~ s/\.z$//; + } else { + $file = "$TopDir/pc/$host/LOG$ext"; + } $linkHosts = 1; } else { - $file = "$TopDir/log/LOG$ext"; + $file = "$LogDir/LOG$ext"; $linkHosts = 1; } - if ( !$Privileged ) { + if ( $type ne "docs" && !$Privileged ) { ErrorExit($Lang->{Only_privileged_users_can_view_log_or_config_files}); } if ( !-f $file && -f "$file.z" ) { @@ -106,7 +109,10 @@ sub action } my($contentPre, $contentSub, $contentPost); $contentPre .= eval("qq{$Lang->{Log_File__file__comment}}"); - if ( defined($fh = BackupPC::FileZIO->open($file, 0, $compress)) ) { + if ( $file ne "" + && defined($fh = BackupPC::FileZIO->open($file, 0, $compress)) ) { + + $fh->utf8(1); my $mtimeStr = $bpc->timeStamp((stat($file))[9], 1); $contentPre .= eval("qq{$Lang->{Contents_of_log_file}}"); @@ -168,7 +174,7 @@ sub action last if ( $s eq "" ); $s =~ s/[\n\r]+//g; $s = ${EscHTML($s)}; - $s =~ s/\b([\w-]+)\b/defined($Hosts->{$1}) + $s =~ s/\b([\w-.]+)\b/defined($Hosts->{$1}) ? ${HostLink($1)} : $1/eg; $c .= $s . "\n"; } @@ -186,16 +192,16 @@ sub action last if ( $s eq "" ); $s =~ s/[\n\r]+//g; # remove any passwords and user names - $s =~ s/(SmbSharePasswd.*=.*['"]).*(['"])/$1$2/ig; - $s =~ s/(SmbShareUserName.*=.*['"]).*(['"])/$1$2/ig; - $s =~ s/(RsyncdPasswd.*=.*['"]).*(['"])/$1$2/ig; - $s =~ s/(ServerMesgSecret.*=.*['"]).*(['"])/$1$2/ig; + $s =~ s/(SmbSharePasswd.*=.*['"]).*(['"])/$1****$2/ig; + $s =~ s/(SmbShareUserName.*=.*['"]).*(['"])/$1****$2/ig; + $s =~ s/(RsyncdPasswd.*=.*['"]).*(['"])/$1****$2/ig; + $s =~ s/(ServerMesgSecret.*=.*['"]).*(['"])/$1****$2/ig; $s = ${EscHTML($s)}; $s =~ s[(\$Conf\{.*?\})][ my $c = $1; my $s = lc($c); - $s =~ s{(\W)}{sprintf("%%%02x", ord($1) )}gxe; - "$c" + $s =~ s{(\W)}{_}g; + "$c" ]eg; $c .= $s . "\n"; } @@ -216,7 +222,7 @@ sub action return $c; }; # - # Documentation a different header and no pre or post text, + # Documentation has a different header and no pre or post text, # so just handle it here # Header($Lang->{BackupPC__Documentation}, "", 0, $contentSub);