#!/usr/bin/perl
#
#

use DBI;
use File::Basename;


$mailprog = '/usr/sbin/sendmail';
$absender = 'prorataweb@prorata.de';
$subject = 'Ihre Zugangsdaten';

my $LOGFILE = '/var2/log/qmail/prorata/autoreply.log';

my $DB_DSN      = "DBI:mysql:prorata2:ns.prorata.de:3307";
my $DB_USER     = "prorata";
my $DB_PASSWD   = "altoids7";

my $dbh = DBI->connect($DB_DSN, $DB_USER, 
   $DB_PASSWD) or err::error_seite{"Cannot connect to DB"};
my $FROM="";
my $TO="";
my $date = getdate();

#open(LOG,">>/var/www/prorata/domains/www.prorata.de/logs/autoreply.log") or exit 99;
#open(LOG,">>/webhome/www/prorata/domains/www.prorata.de/logs/anmeldedaten.log");

open(LOG,">>",$LOGFILE) or die "Konnte STDOUT nicht in Datei $LOGFILE umleiten";

print LOG "$date:\n"."Die Zugangsdaten werden angefragt.........\n";

while ($check=$line= <STDIN>){ 
	if ( ($FROM)=$line=~/^[F,f]rom:.*[<, ](\S+@\S+\.\w{2,3})[>,\s]/) {$TO=$FROM;} 
	#print $check;
	#if (($check =~ /^Subject:_/) || ($check =~ m/^SPAM/)) {$SPAM=1;}
#        #print LOG $line


#####if ( $check =~/^[S,s]ubject: \*\*\*\*\*SPAM\*\*\*\*\*/\s/) {
if ( $check =~ m/^[S,s]ubject: \*\*\*\*\*SPAM\*\*\*\*\*/) {
#   $dbh->disconnect;
###print LOG "SPAM!-Abgebrochen\n";   
#      close LOG;
      print LOG "Ev. SPAM!-Abgebrochen!";
#      exit 99;
   }
}	    

if ($TO eq ""){print LOG "From-line not found\n"; $dbh->disconnect; close LOG; print "Error with From-line"; exit 99;}

($vname, $nname, $PIN,$PASS)=$dbh->selectrow_array("select vname, nname, pin, pass from benutzer where email LIKE '$TO'");

if (($PIN eq "") || ($PASS eq "")) {print LOG "$TO was not in Database\n"; errormail();}

print LOG "$date:\n"."Die Zugangsdaten werden angefragt.........\n";
print LOG  "Sending PIN=$PIN and PASS to $vname $nname  <$TO>   Sender was: $ENV{SENDER}\n\n"."-------------------------------------------------------------------\n";
# close LOG;


    # Open The Mail Program
    open(MAIL,"|$mailprog -t");
    #open(MAIL,">>tehest");

    print MAIL "To: $TO\n";
    print MAIL "From: $absender\n";

    # Print Message Subject
    print MAIL "Subject: $subject\n\n";
    print MAIL "Hallo $vname $nname \n";
    print MAIL "Sie haben uns gebeten, Ihnen Ihre Zugangsdaten\nfür die Teilnahme an unseren Umfragen\nzuzusenden.\n\n";
    print MAIL "Ihre PIN ist : $PIN\n";
    print MAIL "Ihr Passwort ist : $PASS\n\n";
    print MAIL "Wir empfehlen Ihnen Ihr Passwort zu ändern. \n\n";
    print MAIL "Mit freundlichem Gruß\n\nIhr prorata.web - TEAM!\n";
    print MAIL "-------------------------------------------------------\n\n"."Automatisch erstellt am ".$date."\n";
    close (MAIL);	


$dbh->disconnect;
print LOG "\nPin and Pass will be replied to $TO\n"."-------------------------------------------------------------------\n";

close LOG;
exit 0;

sub errormail {

    # Open The Mail Program
    open(MAIL,"|$mailprog -t");
    #open(MAIL,">>tehest");

    print MAIL "To: $ENV{SENDER}\n";
    print MAIL "From: $absender\n";

    # Print Message Subject
    print MAIL "Subject: PRORATA: Ihre Anfrage; Houston, wir haben ein Problem......\n\n";
    print MAIL "Hallo,\n\n";
    print MAIL "Ihre Absendeadresse: $TO wurde in unserer Datenbank nicht gefunden.\n\n";
    print MAIL "Benutzen sie bitte die Adresse, die Sie in unsere Datenbank eingetragen haben !!\n";
    print MAIL "Entweder als Absender oder folgendermaßen im Body Ihrer Mail:\n\n\From: <IhreAdresse\@IhrProvider.de>\n\n".
		"wobei IhreAdresse\@IhrProvider.de natürlich Ihre alte/andere E-mailadresse ist, \nan die aus Sicherheitsgründen dann auch die Daten gesendet werden. \n\nSchicken Sie diese Mail dann wieder an anmeldedaten\@prorata.de \n\n";
    print MAIL "Alternativ können Sie auch die Seite\n\n https://ssl.prorata.de/index.php?id=teilnehmerbereich verwenden,\n\n um an Ihre Daten zu kommen\n\n"."Mit freundlichem Gruß\n\nIhr prorata.web - TEAM!\n";
    print MAIL "-------------------------------------------------------\n\n"."Automatisch erstellt am ".$date."\n";
    close (MAIL);

print LOG "Errormail geschickt zur Adresse: $TO \n"."-------------------------------------------------------------------\n";
$dbh->disconnect;
exit;
}


####################################################################
######         Gibt die locale Zeit aus
######         Argumente  :
######         Returnwert : -
######################################################################
##
sub getdate {

    @days   = ('Sonntag','Montag','Dienstag','Mittwoch',
               'Donnerstag','Freitag','Samstag');
    @months = ('Januar','Februar','März','April','Mai','Juni','Juli',
               'August','September','Oktober','November','Dezember');

  ($sec,$min,$hour,$mday,$mon,$year,$wday) = (localtime(time))[0,1,2,3,4,5,6];
  $time = sprintf("%02d:%02d:%02d",$hour,$min,$sec);
  $year += 1900;

  $date = "$days[$wday], $months[$mon] $mday, $year um $time";
  return $date;

 }
