📄 hostinfo.pm
字号:
<td align="center" class="border"> $ltype </td> <td align="center" class="border"> $is_compress </td> <td align="right" class="border"> $MBExist </td> <td align="right" class="border"> $MBExistComp </td> <td align="right" class="border"> $ExistComp </td> <td align="right" class="border"> $MBNew </td> <td align="right" class="border"> $MBNewComp </td> <td align="right" class="border"> $NewComp </td></tr>EOF $errStr .= <<EOF;<tr><td align="center" class="border"> <a href="$browseURL">$Backups[$i]{num}</a> </td> <td align="center" class="border"> $ltype </td> <td align="center" class="border"> <a href="$MyURL?action=view&type=XferLOG&num=$Backups[$i]{num}&host=${EscURI($host)}">$Lang->{XferLOG}</a>, <a href="$MyURL?action=view&type=XferErr&num=$Backups[$i]{num}&host=${EscURI($host)}">$Lang->{Errors}</a> </td> <td align="right" class="border"> $Backups[$i]{xferErrs} </td> <td align="right" class="border"> $Backups[$i]{xferBadFile} </td> <td align="right" class="border"> $Backups[$i]{xferBadShare} </td> <td align="right" class="border"> $Backups[$i]{tarErrs} </td></tr>EOF } my @Restores = $bpc->RestoreInfoRead($host); my $restoreStr; for ( my $i = 0 ; $i < @Restores ; $i++ ) { my $startTime = timeStamp2($Restores[$i]{startTime}); my $dur = $Restores[$i]{endTime} - $Restores[$i]{startTime}; $dur = 1 if ( $dur <= 0 ); my $duration = sprintf("%.1f", $dur / 60); my $MB = sprintf("%.1f", $Restores[$i]{size} / (1024*1024)); my $MBperSec = sprintf("%.2f", $Restores[$i]{size} / (1024*1024*$dur)); my $Restores_Result = $Lang->{failed}; if ($Restores[$i]{result} ne "failed") { $Restores_Result = $Lang->{success}; } $restoreStr .= <<EOF;<tr><td align="center" class="border"><a href="$MyURL?action=restoreInfo&num=$Restores[$i]{num}&host=${EscURI($host)}">$Restores[$i]{num}</a> </td> <td align="center" class="border"> $Restores_Result </td> <td align="right" class="border"> $startTime </td> <td align="right" class="border"> $duration </td> <td align="right" class="border"> $Restores[$i]{nFiles} </td> <td align="right" class="border"> $MB </td> <td align="right" class="border"> $Restores[$i]{tarCreateErrs} </td> <td align="right" class="border"> $Restores[$i]{xferErrs} </td></tr>EOF } if ( $restoreStr ne "" ) { $restoreStr = eval("qq{$Lang->{Restore_Summary}}"); } if ( @Backups == 0 ) { $warnStr = $Lang->{This_PC_has_never_been_backed_up}; } if ( defined($Hosts->{$host}) ) { my $user = $Hosts->{$host}{user}; my @moreUsers = sort(keys(%{$Hosts->{$host}{moreUsers}})); my $moreUserStr; foreach my $u ( sort(keys(%{$Hosts->{$host}{moreUsers}})) ) { $moreUserStr .= ", " if ( $moreUserStr ne "" ); $moreUserStr .= "${UserLink($u)}"; } if ( $moreUserStr ne "" ) { $moreUserStr = " ($Lang->{and} $moreUserStr).\n"; } else { $moreUserStr = ".\n"; } if ( $user ne "" ) { $statusStr .= eval("qq{$Lang->{This_PC_is_used_by}$moreUserStr}"); } if ( defined($UserEmailInfo{$user}) && $UserEmailInfo{$user}{lastHost} eq $host ) { my $mailTime = timeStamp2($UserEmailInfo{$user}{lastTime}); my $subj = $UserEmailInfo{$user}{lastSubj}; $statusStr .= eval("qq{$Lang->{Last_email_sent_to__was_at___subject}}"); } } if ( defined($Jobs{$host}) ) { my $startTime = timeStamp2($Jobs{$host}{startTime}); (my $cmd = $Jobs{$host}{cmd}) =~ s/$BinDir\///g; $statusStr .= eval("qq{$Lang->{The_command_cmd_is_currently_running_for_started}}"); } if ( $StatusHost{BgQueueOn} ) { $statusStr .= eval("qq{$Lang->{Host_host_is_queued_on_the_background_queue_will_be_backed_up_soon}}"); } if ( $StatusHost{UserQueueOn} ) { $statusStr .= eval("qq{$Lang->{Host_host_is_queued_on_the_user_queue__will_be_backed_up_soon}}"); } if ( $StatusHost{CmdQueueOn} ) { $statusStr .= eval("qq{$Lang->{A_command_for_host_is_on_the_command_queue_will_run_soon}}"); } my $startTime = timeStamp2($StatusHost{endTime} == 0 ? $StatusHost{startTime} : $StatusHost{endTime}); my $reason = ""; if ( $StatusHost{reason} ne "" ) { $reason = " ($Lang->{$StatusHost{reason}})"; } $statusStr .= eval("qq{$Lang->{Last_status_is_state_StatusHost_state_reason_as_of_startTime}}"); if ( $StatusHost{state} ne "Status_backup_in_progress" && $StatusHost{state} ne "Status_restore_in_progress" && $StatusHost{error} ne "" ) { $statusStr .= eval("qq{$Lang->{Last_error_is____EscHTML_StatusHost_error}}"); } my $priorStr = "Pings"; if ( $StatusHost{deadCnt} > 0 ) { $statusStr .= eval("qq{$Lang->{Pings_to_host_have_failed_StatusHost_deadCnt__consecutive_times}}"); $priorStr = $Lang->{Prior_to_that__pings}; } if ( $StatusHost{aliveCnt} > 0 ) { $statusStr .= eval("qq{$Lang->{priorStr_to_host_have_succeeded_StatusHostaliveCnt_consecutive_times}}"); 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 $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___}}"); } } if ( $StatusHost{backoffTime} > time ) { my $hours = sprintf("%.1f", ($StatusHost{backoffTime} - time) / 3600); $statusStr .= eval("qq{$Lang->{Backups_are_deferred_for_hours_hours_change_this_number}}"); } if ( @Backups ) { # only allow incremental if there are already some backups $startIncrStr = <<EOF;<input type="button" value="$Lang->{Start_Incr_Backup}" onClick="document.StartStopForm.action.value='Start_Incr_Backup'; document.StartStopForm.submit();">EOF } $startIncrStr = eval("qq{$startIncrStr}"); my $content = eval("qq{$Lang->{Host__host_Backup_Summary2}}"); Header(eval("qq{$Lang->{Host__host_Backup_Summary}}"), $content); Trailer();}1;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -