X-Git-Url: http://git.rot13.org/?p=BackupPC.git;a=blobdiff_plain;f=bin%2FBackupPC_sendEmail;h=8357bdcb815fb0f903de199a1b0510aaef4c9bfa;hp=9131081358fefc75f7f331c1a68f1d249ee8c541;hb=5b3e6091d542c2e7445d5dd511cdf6e20aec8b8d;hpb=74dc9d456332757127d5eda4ce32f29377133fa2 diff --git a/bin/BackupPC_sendEmail b/bin/BackupPC_sendEmail index 9131081..8357bdc 100755 --- a/bin/BackupPC_sendEmail +++ b/bin/BackupPC_sendEmail @@ -1,4 +1,4 @@ -#!/bin/perl -T +#!/bin/perl #============================================================= -*-perl-*- # # BackupPC_sendEmail: send status emails to users and admins @@ -13,7 +13,7 @@ # Craig Barratt # # COPYRIGHT -# Copyright (C) 2001 Craig Barratt +# Copyright (C) 2001-2003 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 @@ -31,13 +31,14 @@ # #======================================================================== # -# Version 2.0.0beta3, released 1 Jun 2003. +# Version 3.0.0alpha, released 23 Jan 2006. # # See http://backuppc.sourceforge.net. # #======================================================================== use strict; +no utf8; use lib "/usr/local/BackupPC/lib"; use BackupPC::Lib; use BackupPC::FileZIO; @@ -45,10 +46,11 @@ use BackupPC::FileZIO; use Data::Dumper; use Getopt::Std; use DirHandle (); -use vars qw($Lang $TopDir $BinDir %Conf); +use vars qw($Lang $TopDir $BinDir $LogDir %Conf); die("BackupPC::Lib->new failed\n") if ( !(my $bpc = BackupPC::Lib->new) ); $TopDir = $bpc->TopDir(); +$LogDir = $bpc->LogDir(); $BinDir = $bpc->BinDir(); %Conf = $bpc->Conf(); $Lang = $bpc->Lang(); @@ -56,7 +58,7 @@ $Lang = $bpc->Lang(); $bpc->ChildInit(); use vars qw(%UserEmailInfo); -do "$TopDir/log/UserEmailInfo.pl"; +do "$LogDir/UserEmailInfo.pl"; my %opts; if ( !getopts("t", \%opts) || @ARGV != 0 ) { @@ -81,7 +83,8 @@ my $mesg = ""; my @badHosts = (); foreach my $host ( sort(keys(%Status)) ) { - next if ( $Status{$host}{reason} ne "backup failed" + next if ( ($Status{$host}{reason} ne "Reason_backup_failed" + && $Status{$host}{reason} ne "Reason_restore_failed") || $Status{$host}{error} =~ /^lost network connection to host/ ); push(@badHosts, "$host ($Status{$host}{error})"); } @@ -120,7 +123,7 @@ my @oldDirs = (); my @files = $d->read; $d->close; foreach my $host ( @files ) { - next if ( $host eq "." || $host eq ".." || defined($Status{$host}) ); + next if ( $host =~ /^\./ || defined($Status{$host}) ); push(@oldDirs, "$TopDir/pc/$host"); } if ( @oldDirs ) { @@ -138,10 +141,12 @@ EOF } if ( $mesg ne "" && $Conf{EMailAdminUserName} ne "" ) { + my $headers = $Conf{EMailHeaders}; + $headers .= "\n" if ( $headers !~ /\n$/ ); $mesg = <{$host}{user}; next if ( time - $UserEmailInfo{$user}{lastTime} < $Conf{EMailNotifyMinDays} * 24*3600 ); + next if ($Conf{XferMethod} eq "archive" ); my @Backups = $bpc->BackupInfoRead($host); my $numBackups = @Backups; if ( $numBackups == 0 ) { @@ -214,8 +220,8 @@ foreach my $host ( sort(keys(%Status)) ) { while ( 1 ) { my $s = $fh->readLine(); last if ( $s eq "" ); - if ( $s =~ /^Error reading file.*\.pst : ERRDOS - ERRlock/ - || $s =~ /^Error reading file.*\.pst\. Got 0 bytes/ ) { + if ( $s =~ /^\s*Error reading file.*\.pst : (ERRDOS - ERRlock|NT_STATUS_FILE_LOCK_CONFLICT)/ + || $s =~ /^\s*Error reading file.*\.pst\. Got 0 bytes/ ) { $badOutlook = 1; last; } @@ -281,7 +287,8 @@ if ( !$opts{t} ) { my $dumpStr = Data::Dumper->Dump( [\%UserEmailInfo], [qw(*UserEmailInfo)]); - if ( open(HOST, ">", "$TopDir/log/UserEmailInfo.pl") ) { + if ( open(HOST, ">", "$LogDir/UserEmailInfo.pl") ) { + binmode(HOST); print(HOST $dumpStr); close(HOST); } @@ -299,10 +306,12 @@ sub user2name sub sendUserEmail { my($user, $host, $mesg, $subj, $vars) = @_; - $vars->{user} = $user; - $vars->{host} = $host; - $vars->{domain} = $Conf{EMailUserDestDomain}; - $vars->{CgiURL} = $Conf{CgiURL}; + $vars->{user} = $user; + $vars->{host} = $host; + $vars->{headers} = $Conf{EMailHeaders}; + $vars->{headers} .= "\n" if ( $vars->{headers} !~ /\n$/ ); + $vars->{domain} = $Conf{EMailUserDestDomain}; + $vars->{CgiURL} = $Conf{CgiURL}; $subj =~ s/\$(\w+)/defined($vars->{$1}) ? $vars->{$1} : "\$$1"/eg; $vars->{subj} = $subj; $mesg =~ s/\$(\w+)/defined($vars->{$1}) ? $vars->{$1} : "\$$1"/eg;