X-Git-Url: http://git.rot13.org/?p=BackupPC.git;a=blobdiff_plain;f=lib%2FBackupPC%2FCGI%2FHostInfo.pm;h=546beefceeeef70e2f4f036c61d3049f4efc2aac;hp=a49eb79fd6d10ebc831741fc606c98e59714294b;hb=fda25dc88a63ccac1c80efa2e4994bf0725ca9b7;hpb=a7e968ce327855f2ba2624ca8517069a936c9b5b diff --git a/lib/BackupPC/CGI/HostInfo.pm b/lib/BackupPC/CGI/HostInfo.pm index a49eb79..546beef 100644 --- a/lib/BackupPC/CGI/HostInfo.pm +++ b/lib/BackupPC/CGI/HostInfo.pm @@ -10,7 +10,7 @@ # Craig Barratt # # COPYRIGHT -# Copyright (C) 2003 Craig Barratt +# Copyright (C) 2003-2007 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.0_CVS, released 3 Jul 2003. +# Version 3.1.0, released 25 Nov 2007. # # See http://backuppc.sourceforge.net. # @@ -46,14 +46,16 @@ sub action $host =~ s/^\s+//; $host =~ s/\s+$//; - return Action_GeneralInfo() if ( $host eq "" ); + if ( $host eq "" ) { + ErrorExit(eval("qq{$Lang->{Unknown_host_or_user}}")); + } $host = lc($host) - if ( !-d "$TopDir/pc/$host" && -d "$TopDir/pc/" . lc($host) ); + if ( !-d "$TopDir/pc/$host" && -d "$TopDir/pc/" . lc($host) ); if ( $host =~ /\.\./ || !-d "$TopDir/pc/$host" ) { # # try to lookup by user name # - if ( !defined($Hosts->{$host}) ) { + if ( $host eq "" || !defined($Hosts->{$host}) ) { foreach my $h ( keys(%$Hosts) ) { if ( $Hosts->{$h}{user} eq $host || lc($Hosts->{$h}{user}) eq lc($host) ) { @@ -63,7 +65,7 @@ sub action } CheckPermission(); ErrorExit(eval("qq{$Lang->{Unknown_host_or_user}}")) - if ( !defined($Hosts->{$host}) ); + if ( !defined($Hosts->{$host}) ); } $In{host} = $host; } @@ -76,7 +78,7 @@ sub action } ReadUserEmailInfo(); - if ($Conf{XferMethod} eq "archive" ) { + if ( $Conf{XferMethod} eq "archive" ) { my @Archives = $bpc->ArchiveInfoRead($host); my ($ArchiveStr,$warnStr); @@ -112,7 +114,7 @@ EOF } my $content = eval("qq{$Lang->{Host__host_Archive_Summary2}}"); - Header(eval("qq{$Lang->{Host__host_Archive_Summary}}"), $content); + Header(eval("qq{$Lang->{Host__host_Archive_Summary}}"), $content, 1); Trailer(); return; } @@ -146,6 +148,7 @@ EOF } my $age = sprintf("%.1f", (time - $Backups[$i]{startTime}) / (24*3600)); my $browseURL = "$MyURL?action=browse&host=${EscURI($host)}&num=$Backups[$i]{num}"; + my $level = $Backups[$i]{level}; my $filled = $Backups[$i]{noFill} ? $Lang->{No} : $Lang->{Yes}; $filled .= " ($Backups[$i]{fillFromNum}) " if ( $Backups[$i]{fillFromNum} ne "" ); @@ -154,6 +157,7 @@ EOF $Backups[$i]{num} $ltype $filled + $level $startTime $duration $age @@ -286,17 +290,52 @@ EOF if ( $StatusHost{aliveCnt} > 0 ) { $statusStr .= eval("qq{$Lang->{priorStr_to_host_have_succeeded_StatusHostaliveCnt_consecutive_times}}"); - if ( $StatusHost{aliveCnt} >= $Conf{BlackoutGoodCnt} - && $Conf{BlackoutGoodCnt} >= 0 && $Conf{BlackoutHourBegin} >= 0 - && $Conf{BlackoutHourEnd} >= 0 ) { + if ( (@{$Conf{BlackoutPeriods}} || defined($Conf{BlackoutHourBegin})) + && $StatusHost{aliveCnt} >= $Conf{BlackoutGoodCnt} + && $Conf{BlackoutGoodCnt} >= 0 ) { + # + # Handle backward compatibility with original separate scalar + # blackout parameters. + # + if ( defined($Conf{BlackoutHourBegin}) ) { + push(@{$Conf{BlackoutPeriods}}, + { + hourBegin => $Conf{BlackoutHourBegin}, + hourEnd => $Conf{BlackoutHourEnd}, + weekDays => $Conf{BlackoutWeekDays}, + } + ); + } + + # + # TODO: this string needs i18n. Also, comma-separated + # list with "and" for the last element might not translate + # correctly. + # my(@days) = qw(Sun Mon Tue Wed Thu Fri Sat); - my($days) = join(", ", @days[@{$Conf{BlackoutWeekDays}}]); - my($t0) = sprintf("%d:%02d", $Conf{BlackoutHourBegin}, - 60 * ($Conf{BlackoutHourBegin} - - int($Conf{BlackoutHourBegin}))); - my($t1) = sprintf("%d:%02d", $Conf{BlackoutHourEnd}, - 60 * ($Conf{BlackoutHourEnd} - - int($Conf{BlackoutHourEnd}))); + my $blackoutStr; + my $periodCnt = 0; + foreach my $p ( @{$Conf{BlackoutPeriods}} ) { + next if ( ref($p->{weekDays}) ne "ARRAY" + || !defined($p->{hourBegin}) + || !defined($p->{hourEnd}) + ); + my $days = join(", ", @days[@{$p->{weekDays}}]); + my $t0 = sprintf("%d:%02d", $p->{hourBegin}, + 60 * ($p->{hourBegin} - int($p->{hourBegin}))); + my $t1 = sprintf("%d:%02d", $p->{hourEnd}, + 60 * ($p->{hourEnd} - int($p->{hourEnd}))); + if ( $periodCnt ) { + $blackoutStr .= ", "; + if ( $periodCnt == @{$Conf{BlackoutPeriods}} - 1 ) { + $blackoutStr .= eval("qq{$Lang->{and}}"); + $blackoutStr .= " "; + } + } + $blackoutStr + .= eval("qq{$Lang->{__time0_to__time1_on__days}}"); + $periodCnt++; + } $statusStr .= eval("qq{$Lang->{Because__host_has_been_on_the_network_at_least__Conf_BlackoutGoodCnt_consecutive_times___}}"); } } @@ -308,11 +347,13 @@ EOF if ( @Backups ) { # only allow incremental if there are already some backups $startIncrStr = < + EOF } - $startIncrStr = eval ("qq{$startIncrStr}"); + $startIncrStr = eval("qq{$startIncrStr}"); my $content = eval("qq{$Lang->{Host__host_Backup_Summary2}}"); Header(eval("qq{$Lang->{Host__host_Backup_Summary}}"), $content); Trailer();