#!/usr/bin/perl -w

use Getopt::Std;       # Für Optionen                                           
use File::Find;
use Mail::Sendmail;
use Date::Manip;
use POSIX qw(locale_h strftime);
use strict;

setlocale(LC_TIME,'deutsch');

my (@hosts, @s_fields);
my ($FileDir, $FileName, $string);

# Auswertung der Kommandozeile
getopts("t:")   || die "Wrong parameter.\n"; ;
 
 
if   ($#ARGV != 0) {
  print STDERR "Wrong number of parameters.\n";
  exit 1;
} else {
  ($FileDir) =  @ARGV;
}                                                                               

&Date_Init("Language=German","DateFormat=non-US");
 
$FileName = "backups";

# Datei mit Zuordnung Host <--> E-Mail einlesen
open(DAT,"/etc/backuppc/hosts") or die 'Fehler beim Oeffnen.';
  @hosts = <DAT>;
close(DAT);

suche_name_in_index($FileDir, $FileName);	# Backups mit Fehlern suchen 

exit 0;


#########################################################################
# 
#########################################################################
sub suche_name_in_index {                                      

 my ($FileDir,$FileName) = @_;	
 my $FileNameDir = "$FileDir/$FileName";
 my ($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size,$atime,$mtime,$ctime);
 $size=0;
 $string = "";
 $s_fields[10] = "0";

 ($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size,$atime,$mtime,$ctime) = stat($FileNameDir);  

 if($size > 0)
 {
  if (open INDEX, "$FileNameDir")
  {
   while (<INDEX>) {
      $string = $_;
   }

   @s_fields = split(' ', $string);

   # in der 11.Spalte steht die Fehleranzahl
   if($s_fields[10] > 0)
   {
     my $start_zeit = strftime '%d.%m.%Y', localtime(time());
     my $stop_zeit = strftime '%d.%m.%Y', localtime($s_fields[3]);;

     my $flag = Date_Cmp($start_zeit,$stop_zeit);
     if ($flag<0) {
               # Backup-Datum ist später also nicht Heute!
     } elsif ($flag==0) {
               # gleiches Datum
		my @hostname = split('\/pc\/', $FileDir);
		my @gg = grep (/^$hostname[1]/, @hosts);
		my @a_fields = split(' ', $gg[0]);
     		my %mail = ( To       => "$a_fields[2]",
              		From          => 'backuppc-admin@ifsw.uni-stuttgart.de',
              		Subject       => "Backup: $s_fields[10] Fehler beim automatischen Backup von Host: $hostname[1]",
              		Message       => "Hallo,\n\nam $start_zeit sind $s_fields[10] Fehler beim automatischen Backup aufgetreten.\n\nBitte gehen Sie zu\nhttp://merkur/backuppc/index.cgi?action=view&type=XferErr&num=$s_fields[0]&host=$hostname[1]\nund korrigieren Sie die angezeigten Fehler\n\n\nGrüße, Bernd\n "
            		);
		print "Host: $hostname[1] mit $s_fields[10] Fehler. E-Mail an: $a_fields[2]\n";
		sendmail(%mail) or die $Mail::Sendmail::error;
     } else {
               # Backup-Datum ist früher also nicht Heute!
     }
   }
  close INDEX;
 }
 }
} 
